你好,我尝试了一下,没有解决结尾无空行的问题,下面是我的代码,欢迎指正
#include<stdio.h>
#include<math.h>
int main(){
int N,a,b;
while(scanf("%d",&N),N<3||N>7);
a=pow(10,N-1);
b=pow(10,N);
while(a<b){//由a到b穷举
int sum=0,k;
k=a;//把a赋值给k,用k进行逐位拆分操作
while(k){//拆分k,累加每位的N次幂
sum+=pow(k%10,N);
k/=10;
}
if(sum==a) printf("%d\n",a); //重组后新数等于原数,输出
a++;
}
}
运行结果:
解决结尾无空行的修改,供参考:
#include<stdio.h>
#include<math.h>
int main() {
int N, a, b, flg = 0;//修改
while (scanf("%d", &N), N < 3 || N>7);
a = pow(10, N - 1);
b = pow(10, N);
while (a < b) {//由a到b穷举
int sum = 0, k;
k = a;//把a赋值给k,用k进行逐位拆分操作
while (k) {//拆分k,累加每位的N次幂
sum += pow(k % 10, N);
k /= 10;
}
if (sum == a)
printf(flg++ == 0 ? "%d" : "\n%d", a); //解决结尾无空行
a++;
}
}