蓝桥杯——猜年龄

猜年龄

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

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

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

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

分析:

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

代码:

#include 
#include 
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;
}
蓝桥杯——猜年龄_第1张图片


你可能感兴趣的:(蓝桥杯——猜年龄)