题目:
输入一个n,输出一个长度为n的水仙花数,长度为n的水仙花数的定义:水仙花数的每一位的n次幂之和等于其本身
输入格式:
第一行输入一个n。
输出格式:
输出位数所有n的水仙花数。每输出一个数空一行。
输入样例:
3
输出样例:
二、思路以及其解析153
370
371
407
注意:这里我们用i来写个for循环遍历pow(10,n-1)到pow(10,n)之间的所有的数。
三、代码展示 #includeusing namespace std; #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define ll long long #define endl "n" #define PII pair const int N=1e5+10; int n; int panduan(int x)//建立一个判断函数,判断一个数是否为水仙花数。 { int ans[N];//ans用来存放x的每一位数 int l=1;//l维护的是数组ans的下标 int p=x;//因为接下来x的值会发生变化,然而判断是否为水仙花数的时候需要将ans与原来的x是否相等来判断。所有先用一个p将x的值预留一下。 while(x!=0) { ans[l]=x%10;//这里将x的个位数到高位数的每一位放到ans数组里面去。 x/=10; l++; } int sum=0;//这里的sum维护的是代表的每一位的n次幂和 for(int i=1;i<=l-1;i++)//这里将ans数组的每一位逐个遍历,目的是求每一位的n次方之和 { sum+=pow(ans[i],n);//这里的sum维护的是代表的每一位的n次幂和 } if(sum==p)return 1;//当x是水仙花数的时候函数返回一个1,如果sum==p即每位数的n次放和等于其本身的时候为水仙花数 else return 0;//当x不是水仙花数的时候函数返回一个0,如果sum!=p即每位数的n次放和不等于其本身的时候不为水仙花数 } int main() { cin>>n;//按照题目要求这里输入一个n。 for(int i=pow(10,n-1);i 前面的头文件和预留处理不用看。属于本人个人的c++编码习惯。注意:c++当中cin>>a等价于scanf("%d",&a)表示输入整形变量a。cout<等价于printf("%dn",a)表示输出a并且换行。
四、留言推荐两道类似题目hh
登录—专业IT笔试面试备考平台_牛客网
3644. 水仙花数 - AcWing题库



