这个题目这么写为什么不成功?
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i=1,first=1;
while(i<n)
{
first*=10;
i++;
}
i=first;
printf("i=%d\n",i);
while(i<first*10)
{
int t=i,sum=0;
do
{
int d=t%10;
t/=10;
int p=1,j=1;
while(j<n)
{
p*=d;
j++;
}
sum+=p;
//printf("sum=%d\n",sum);
}
while(t>0);
if(sum==i)
{
printf("%d",i);
}
i++;
}
}
你的代码大问题没有,只是int p=1,j=1;这行中,j的初始值错误,应该是j=0
你的代码实际这个循环只执行了n-1次,导致结果不对了。修改如下:
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i=1,first=1;
while(i<n)
{
first*=10;
i++;
}
i=first;
printf("i=%d\n",i);
while(i<first*10)
{
int t=i,sum=0;
if(t==153)
int kk = 0;
do
{
int d=t%10;
t/=10;
int p=1,j=0;
while(j<n)
{
p*=d;
j++;
}
sum+=p;
}while(t>0);
if(sum==i)
{
printf("%d\n",i);
}
i++;
}
}
#include <stdio.h>
#include <math.h>
int main() {
printf("输入一个正整数n:\n");
int n; //n位数
scanf("%d",&n);
int f=pow(10,n-1);
//遍历n位数下的所有正整数
for (int j = f; j < f*10; ++j) {
int t=j;
int sum=0;
do {
int d=t%10;
t=t/10;
sum+= pow(d,n);
} while (t>0);
if(sum==j){
printf("%d\n",j);
}
}
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
int a;
int b,c;
int m;
int k;
int l;
l=0;
k=0;
scanf("%d",&a);
b=pow(10,a);
c=pow(10,a-1);
for(m=c;m<b;m++){
k=0;
l=m;
while(l>0){
k+= (int)pow(l%10,a);
l/=10;
}
if(m==k){
printf("%d\n",m);
}
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!