猜年龄

   美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。

    一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:

    “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”

    请你推算一下,他当时到底有多年轻。

分析:

刚开始想着直接求出来年龄的立方和四次方,然后用sprintf函数将其转换为字符型,却发生了许多无法理解的错误,最后还是决定直接求出每一位数字存在数组里。。。

代码:


#include <stdio.h>
#include <math.h>
int main()
{
int age;
int age3,age4;
int i,j;
int a[10];
int flag=0;
for(age=11; age<50; age++)
{
age3=pow(age,3);
age4=pow(age,4);
if(age3>999&&age3<10000&&age4>99999&&age4<1000000)
{
i=0;
while(age3>0)
{
a[i++]=age3%10;
age3=age3/10;
}
while(age4>0)
{
a[i++]=age4%10;
age4=age4/10;
}
for(i=0; i<10; i++)
for(j=i+1; j<10; j++)
{
if(a[i]==a[j])
flag=1;
if(flag==1)
break;
}
if(flag==0)
printf("%d\n",age);
}
}
return 0;
}

蓝桥杯——猜年龄_#include