蓝桥杯——2015年C++A组第3题:奇妙的数字【枚举】

一、题目

小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?

请填写该数字,不要填写任何多余的内容。

二、思路

0-9一共有10个数字,平方只能是4位数,立方只可能是6位数。

因此这个数字是个二位数。范围是10-99。

但是,用1000开根得到31.6,因此平方是四位数范围从32开始,所以循环从32开始。

所以循环范围是32-99。

用num[i]表示数字i出现过的次数。如果这个数字出现过了,跳出循环。如果没有出现过,记录。

三、题解

#include <iostream>
using namespace std;

int main()
{
    int a;
    int b;
    int num[10];
    int flag;
    for (int i=32;i<100;i++)
    {
        a=i*i;
        b=i*i*i;
        memset(num,0, sizeof(num));
        flag=1;
        while(a)
        {
            if(num[a%10])
            {
                flag=0;
                break;
            }
            else
            {
                num[a%10]++;
            }
            a=a/10;
        }
        if(!flag)
            continue;
        while(b)
        {
            if(num[b%10])
            {
                flag=0;
                break;
            }
            else
            {
                num[b%10]++;
            }
            b=b/10;
        }
        if(flag)
            cout << i << endl;
    }
    return 0;
}

四、结果

69

Process finished with exit code 0

发布了57 篇原创文章 · 获赞 9 · 访问量 3583

猜你喜欢

转载自blog.csdn.net/Jayphone17/article/details/104243005