问题:
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n;
int n3,n4;
int i,j,sign=0;
char a[10]="\0",b[10]="\0",c[20]="\0";
for(n=11; n<40; n++)
{
n3=n*n*n;
n4=n*n*n*n;
sprintf(a,"%d",n3);
sprintf(b,"%d",n4);
for(i=0; i<strlen(a); i++)
c[i]=a[i];
for(j=0; j<strlen(b); j++)
c[i+j]=b[j];
for (i=0; i<9; i++)
{
for (j=i+1; j<=9; j++)
{
if (c[i]==c[j])
{
sign=1;
break;
}
}
if(sign==1)
{
break;
}
}
if(sign==1)
{
sign=0;
}
else
{
printf("%d",n);
break;
}
}
return 0;
}
运行结果:
小结:
这个题的关键在于将数字转换成字符串,以便于判断是否有重复。