题目标题: 猜年龄
美国数学家维纳(N.Wiener)
智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。
#include <iostream>
#include <algorithm>
using namespace std;
int y[15],j;
int f (int x,int z)//该函数用来确定该十个数字是否有重复
//重复返回0,不重复即为正解返回1
{
int m,k;
j=0;
while(x>0)
{
m=x%10;
y[j]=m;
j++;
x=x/10;
}
while(z>0)
{
m=z%10;
y[j]=m;
j++;
z=z/10;
}
for(k=1;k<j;k++)
{
sort(y,y+j);
if(y[k]==y[k-1])
{
return 0;
}
}
return 1;
}
int main ()
{
int a,i,xxx,xxxx,x;
for(i=11;i<=31;i++)//自己实现推断符合的年龄的范围
//缩小到11到31
{
xxx=i*i*i;
xxxx=i*i*i*i;
x=f(xxx,xxxx);
if(x==1)
{
cout<<i<<endl;
break;
}
}
return 0;
}