习题4-6 水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:

输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:

3
结尾无空行

输出样例:

153
370
371
407
结尾无空行

#include<stdio.h>
#include<math.h>
int square(int x,int N){   //平方函数 
		int sum=1;
	for(int i=1;i<=N;i++){
		sum*=x;
	}
	return sum;
}
main() {
	int N;
	scanf("%d",&N);
	int max=pow(10,N);
	for(int i=pow(10,N-1);i<max;i++){
		int sum=0; 
		for(int x=i;x>0;x/=10){		// x/10去掉尾巴 
		int tail=x%10; 			   //每轮循环取i最后一位 做方次运算 
			sum+=square(tail,N);   //将最后一位的方次加进sum 
			if(sum==i&&x<10){		// x<10是为了防止最后一位直接等于i的情况 比如125 5^3=125 会直接输出 
			printf("%d\n",i);	 
		}
		}
		sum=0; 						//重置sum的值 便于下一次循环 
	} 
}

习题4-6 水仙花数

上一篇:谭浩强C语言水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写程序,计算所有N位水仙花数。


下一篇:vue 路由跳转、传参和axios、cookie插件