[蓝桥省题](C2013_1)猜年龄
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学,他曾在1935-1936年应邀来到中国清华大学讲学,一次,他参加某个重要会议,年轻的脸孔引人注目,于是有人询问他年龄,他回答说:
“我年龄的立方是一个4位数,我年龄的4次方是一个6位数,这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次”
请你推算一下,他当时有多年轻【通过浏览器直接提交他当时年龄的数字,注意不要提交解答过程,或者其他文字】
题意:从题目可知“年轻”这个关键字,则需要找到他最小的那个符合“立方为四位数,4次方为6位数,且这十位数不重复都为0-9”的那个数即可
思路:由于本题是一道填空题,我们并不需要考虑其性能问题,而且数据范围也不大,我们可以使用枚举,来肉眼观察结果然后找到符合要求的那个数字,枚举的范围我们从题意可知,他11岁才上的大学,则参加重要会议也肯定是在这之后,则范围是在【10,n】这个区间内,又由于他很年轻,我们可以从小的范围先去查询,逐步到大的范围。
代码如下所示:
#include<stdio.h>
#include<stdlib.h>
int main()
{
for (int i = 10; i < 30; i++)
{
int l1 = i * i * i;
int l2 = l1 * i;
if (l1 >= 1000 && l1 < 10000 && l2 >= 100000 && l2 < 1000000)
printf("%d %d %d\n", i, l1, l2);
}
system("pause");
return 0;
}
运行结果如下所示:
我们可以很清晰的看到,只有18满足题目要求。则答案为18
教学视频如下: