#include<stdio.h>
int main()
{
int n,n1,n2;
int i,i1;
int num1[10],num2[10];
int j=0,k=0;
for(n=1;n<=100;n++)
{
n1=n*n;
n2=n*n*n;
while(n1)
{
num1[j]=n1%10;//把平方的每一位数字存起来
j++;
n1=n1/10;
}
while(n2)
{
num2[k]=n2%10;//把立方的每一位数字存起来
k++;
n2=n2/10;
}
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
if(!num1[j]==num2[k])break;//如果平方和立方没有重复的数字,就输出n
printf("%d",n);//
}
}
}
return 0;
}
#include<stdio.h>
int main()
{
int n,n1,n2;
int i,i1;
int num1[10],num2[10];
int j=0,k=0;p = 0;
for(n=1;n<=100;n++)
{
j = k = p = 0; // 每次循环后j,k,p的值归零
n1=n*n;
n2=n*n*n;
while(n1)
{
num1[j]=n1%10;//把平方的每一位数字存起来
j++;
n1=n1/10;
}
while(n2)
{
num2[k]=n2%10;//把立方的每一位数字存起来
k++;
n2=n2/10;
}
if(j+k != 10) continue; // 两个数长度加起来都没有十位数那肯定凑不齐0~9,超过十位数了那肯定会有重复的
for(k = 0; j < 10; j++,k++) num1[j] = num2[k]; // 将num2合并到num1里面
for(k = 0; k < 10; k++) // 从num1中查找是否存在0~9
{
for(j = 0;j < 10; j++)
if(k == num1[j]) {p = 1;break;} // 若存在k,寻找是否存在下一个
else p = 0;
if(p == 0) break; // 若p等于0,说明循环完num1都没找到k值,即0~9中有一位不存在,那就别找了下一步吧
}
if(p == 0) continue; // 若p等于0,该数不符合要求,开始下一次循环
else {
printf("符合要求得数为:%d",n);
break;
}
}
return 0;
}