#include<stdio.h>
/*整体思路;本来求水仙花数如果让我们人来算,我肯定不会算,但如果用计算机的角度来思考,计算机很会计算,也就是一个一个试的方法。所以对于这道题,我们输入n的值后,
我们先要让计算机确定最终结果是几到几,然后再从这些数中筛选出满足水仙花数的数*/
int main()
{
int n;
scanf("%d",&n);
int i=1;
int first=1; /*变量的定义与while的条件都是为了能够顺利进入循环,进入循环的目的是为了得到first的值 */
while(i<n){
first=first*10; /*如果假设n=3,我们先要让计算机确定最终结果是从100开始,我们就会设计一个循环,让1不断的乘10,所以前面设置的i=1与后面的i++是决定循环
开始和结束的关键要素。 */
i++;
}
i=first;
while(i<first*10){ /*235 */
int t=i;
int sum=0;
do{
int d;
d=t%10; /* 5 */ /* 3*/ /*2 */
t=t/10;
int p=1;
int h=0;
while(h<3){ /*得到一个三次方,跟前面的*10的思路差不多
要有个初始值,有个条件让其进入循环,然后得有个表达式让循环结束*/
p=p*d; /* 得到 5的三次方 ,然后做完这个循环后,跳到do while的循环 */
h++; /*得到3,2的三次方 */ /*do while循环做完后就跳到最外围的循环 */
}sum=sum+p;
}while(t>0);
if(sum==i){
printf("%d\n",i);
}
i++;
}
return 0;
} /*嵌套的while的理解;先从头至尾进入最内层的while里循环,然后循环完后又到中层然后外层
然后又从头至尾...... */
/*两个while嵌套:两个变量进入循环都是在变动的,但会满足进入外循环的变量先不变,然后进入内循环的变量
在一直改变,直到内循环停止,然后再进入外循环,外循环变量变动,然后再进入内循环。 */
/*关于格式:其实就是打印出换行,空格。内循环一次停止后打印出换行即可。 */
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,j;
i=1;
while(i<=n){
j=1;
while(j<=i){
printf("%d*%d=%d",j,i,j*i);
if(j*i<10){
printf(" ");
}else{
printf(" ");
}
j++;
}printf("\n");
i++;
}
return 0;
}