题目描述
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?
输出
请输出该数字,不要输出任何多余的内容。
这里我简要说明一下这道题的意思,刚开始我都没看懂。意思是,这道题是求一个数字的平方和立方中,存在有10位数字0~9。可以把平方和立方转化成数组的形式,就比较容易查找里面是否包含了这些数字。
#include<stdio.h>
int main()
{
int i,j,k,jec,m,n;
int a,b,aa[10],bb[10];
int cc[10] = {1,2,3,4,5,6,7,8,9,0};//设置这10位数字
for(i = 50; i <= 100; i++)//因为是10个数字所以大概在这个区间
{
a = i*i;
b = i*i*i;
m = 0;
while(a) //将数字的平方转化为数组,好查找
{
aa[m] = a%10;
a = a/10;
m++;
}
n = 0;
while(b) //将数字的立方转化为数组,好查找
{
bb[n] = b%10;
b = b/10;
n++;
}
if(m + n == 10) //判断是否有10位数字
{
for(j = m; j < m+n; j++)
{
aa[j] = bb[j-m]; //合并两个数组
}
for(j = 0; j < 10; j++)
{
jec = 0; //设置判断的一个标准
for(k = 0; k < 10; k++)
{
if(cc[j] == aa[k])
{
jec = 1;
}
}
if(jec == 0)
break;
}
if(jec == 1) //如果为1就说明10个数字数组里都存在
break;
}
}
printf("%d\n",i);
return 0;
}