int main()
{
int n,i,s,m=1;
scanf("%d",&n);
for(i=1;i<n;i++)
m=m*10;
for(i=m;i<m*10;i++)
{
int k=i;
int sum=0;
while(i>0)
{
int j=i%10;
int p=j;
i=i/10;
for(s=1;s<n;s++)
p=p*j;
sum=sum+p;
}
if(sum==k)
printf("%d ",k);
}
return 0;
}
int main()
{
int n;
scanf("%d",&n);
int first=1;
int i=1;
while(i<n){
first*=10;
i++;
}
printf("first=%d\n",first);
i=first;
while(i<first*10){
int t=i;
int sum=0;
do{
int d=t%10;
t/=10;
int p=d;
int j=1;
while(j<n){
p*=d;
j++;
}
sum+=p;
}while(t>0);
if(sum==i){
printf("%d\n",i);
}
i++;
}
return 0;
}
你在循环中改变了i的值,导致循环结束不了
int main()
{
int n, i, s, m = 1;
scanf("%d", &n);
for (i = 1; i < n; i++)
m = m * 10;
for (i = m; i < m * 10; i++)
{
int k = i;
int sum = 0;
while (k > 0) //(i > 0)
{
int j = k % 10;//int j = i % 10;
int p = j;
k = k / 10; // i = i / 10;
for (s = 1; s < n; s++)
p = p * j;
sum = sum + p;
}
if (sum == i) //(sum == k)
printf("%d ", i); // printf("%d ", k);
}
return 0;
}