【TFLSnoi李志帅】第⑧篇文章---水仙花数

 

 

 

 

 满分代码:

 

 本代码还有多余部分,所以本文章插入两篇代码,下一篇是最优代码。这篇是垃圾代码

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     cin>>n;
 7     for(int i=n;i<=10000;i++)
 8     {
 9         if(i<100)//判断当数据是两位数时
10         {
11             if(pow(i%10,2)+pow(i%100/10,2)==i)
12             {
13                 cout<<i;
14                 break;//根据题目要求,完全没有必要,可以直接跳到三位数部分;
15             }
16         }
17         else if(i>=100 && i<1000)//判断当数据是三位数时
18         {
19             if(pow(i%10,3)+pow(i%100/10,3)+pow(i%1000/100,3)==i)
20             {
21                 cout<<i;
22                 break;
23             }
24         }
25         else if(i>=1000)
26         {
27             if(pow(i%10,4)+pow(i%100/10,4)+pow(i%1000/100,4)+pow(i%10000/1000,4)==i)
28             {
29                 cout<<i;
30                 break;
31             }
32             
33         }
34     }
35     return 0;
36 }

最优解:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     cin>>n;
 7     for(int i=n;i<=10000;i++)
 8     {
 9         if(i<100)
10         {
11             i=99;//当然,根据题目所给输入输出样例可以判断,三位数中最小的水仙花数是153,可以直接写i=152(嘿嘿
12             continue;
13         }
14         else if(i>=100 && i<1000)
15         {
16             if(pow(i%10,3)+pow(i%100/10,3)+pow(i%1000/100,3)==i)
17             {
18                 cout<<i;
19                 break;
20             }
21         }
22         else if(i>=1000)
23         {
24             if(pow(i%10,4)+pow(i%100/10,4)+pow(i%1000/100,4)+pow(i%10000/1000,4)==i)
25             {
26                 cout<<i;
27                 break;
28             }
29             
30         }
31     }
32     return 0;//剩下的部分不变
33 }

 

posted @ 2020-08-19 19:18  九州霜  阅读(143)  评论(0编辑  收藏  举报