【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 }