1. 程式人生 > >猜年齡

猜年齡

strings 10個 數組 class 會議 als length name 數學

美國數學家維納(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;
}

猜年齡