美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。
他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。 于是有人询问他的年龄,他回答说: “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。
提示:
for(int i=0; i<100; i++){
s = 把立方与4次方拼串 if(test(s)==false) continue; print(i); }
#include<iostream>
#include<sstream>//头文件stringstream
#include<string>
using namespace std;
string num(int i)//数字转字符串
{
stringstream ss;
ss<<i;
return ss.str();
}
int num2(string s)//字符串转数组 本题没用到 可以忽略
{
int nu;
stringstream ss(s);
ss>>nu;
return nu;
}
bool test(string ss)//测试自定义函数
{
int i;
int a[10] = {0};
for(i = 0; i < ss.length(); i++)
a[(int)(ss[i] - '0')]++;
for(i = 0; i < 10; i++)
if(a[i] != 1)
return false;
return true;
}
int main()
{
int i;
for(i = 0; i < 100; i++)
{
string s = num(i*i*i)+num(i*i*i*i); //字符串拼接
if(test(s) == false)//测试字符串中0~9出现的次数
continue;
else{
cout<<i;//输出年龄
break;
}
}
return 0;
}