【中学】寻找阿姆斯特朗数
请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。
例如:407=4×4×4+0×0×0+7×7×7。所以407就是一个特殊数。
输入:
正整数的位数n(n<=6)。
输出:
所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提示:"No output.”;若存在,则从小到大进行输出。
说明:
假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出中的1111、2222和9999并不是4位特殊数,只是格式样例):
1111
2222
9999
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
int n,a,b,c,d,e,f,g,i,j=0;
scanf("%d",&n);
a=pow(10,n);
for(i=1;i<a;i++)
{
b=i/100000;
c=(i-b*100000)/10000;
d=(i-b*100000-c*10000)/1000;
e=(i-b*100000-c*10000-d*1000)/100;
f=(i-b*100000-c*10000-d*1000-e*100)/10;
g=(i-b*100000-c*10000-d*1000-e*100-f*10)/1;
if((pow(b,n)+pow(c,n)+pow(d,n)+pow(e,n)+pow(f,n)+pow(g,n))==i&&i>=a/10)
{
printf("%d\n",i);
j++;
}
}
if(j==0)
{
printf("No output.\n");
}
return 0;
}
这太简单 了,就不做说明和注释了,如果是赶DDL,你尽管放心交,憨憨题目 查不了重的,今后还请按时完成作业合理安排时间哦