LQ0201 猜年龄枚举

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0201 猜年龄枚举相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2013初赛 C++ C组A题

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

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

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

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

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

问题分析
10的三次方是1000,所以枚举年龄从10开始。

AC的C语言程序如下:

/* LQ0201 猜年龄 */

#include <stdio.h>
#include <string.h>

char t[16];
char cnt[10];
int judge(char s[])

    memset(cnt, 0, sizeof cnt);
    for (int i = 0; s[i]; i++)
        if (++cnt[s[i] - '0'] > 1)
            return 0;
    return 1;


int main()

    for (int a = 10; ; a++) 
        int a3 = a * a * a, a4;
        if (1000 <= a3 && a3 <= 9999) 
            a4 = a3 * a;
            if (100000 <= a4 && a3 <= 999999) 
                sprintf(t, "%d%d", a3, a4);
                if (judge(t)) 
                    printf("%d\\n", a);
                    return 0;
                
            
        
    

    return 0;

以上是关于LQ0201 猜年龄枚举的主要内容,如果未能解决你的问题,请参考以下文章

猜年龄

蓝桥杯-猜年龄问题

LQ0263 猜生日枚举

LQ0263 猜生日枚举

递归推导——猜年龄

第四届蓝桥杯 软件类省赛真题 第一题:猜年龄