#include<stdio.h>
#include<math.h>
int main()
{
int a,b=1,i,c,d,j,sum=0,n;
scanf("%d",&n);
{for(i=1;i<=(n-1);i++)
b=b*10;}
for(i=b;i<=(b*10);i++)
{ c=i;
sum=0;
while(c!=0)
{
a=c%10;
d=a;
c=c/10;
{for(j=1;j<=(n-1);j++)
a=a*d;}
sum=sum+a;
}
if(i==sum)
printf("%d\n",i);
else
continue;
}
}
1,关于for循环的嵌套 善于运用大括号 达到自己想要的运算步骤,
2,模拟计算机检查错误,像这个题 起先我用的是 pow() 但是 报错运行超时,起先 第一个求“d”的循环语句,我一直写的是for(i=1;i<=n;i++)
3,这样求出的就是(n+1)位数,所以这就是模拟计算机的好处 ,可以找到自己的漏洞,
4,对continue和break的用法 必须在循环里面才能用
关建:找出一个 n位数开头的数 利用第一层循环 判断符合条件的数;
1,怎么利用循环找出这个数;
2,怎么用处理for循环解决次方问题;
思路:
输入n 利用一个循环 找出n位数开头 利用求余 求n次方和判断 ;
利用for循环求n次方需要把每一次求得的余数‘a’赋值给一‘d’个数然后再用for循环求得的n次方和 不能直接利用a的值直接循环 a 的值一直在变化;