c++练习271题:水仙花数
*271题
原题传送门:http://oj.tfls.net/p/271
题解:
#include<bits/stdc++.h> using namespace std; int cf(int a,int b){//a的b次方 int c=a; for (int i=1; i<b; i++)//乘 a=a*c; return a;//返回a的b次方 } int main(){ for (int n=3; n<=7; n++)//从三位数到七位数 { int cfn=cf(10,n); for (int num=cfn/10; num<=cfn; num++)//从n-1位到n位的所有数字遍历 { int ans=cf(num%10,n)+cf(num/10%10,n)+cf(num/100%10,n)+cf(num/1000%10,n)+cf(num/10000%10,n)+cf(num/100000%10,n);//ans=每一位的n次方和 if (ans==num) cout<<ans<<endl;//如果是水仙花数,输出它 } } return 0; }
说明:就是从100-9999999遍历,计算每一位的n次方,判断是不是水仙花数