我是靠谱客的博主 魁梧滑板,最近开发中收集的这篇文章主要介绍蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述

全排列模板:
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。
输入

没有输入。
输出

输出一个整数,即维纳的年龄。
提示

把答案放在输出语句中输出,例如C/C++语言可以用printf或cout。

思路

做了这么多的全排列题目,这道题很明显只需要注意判断条件就行了(还不会排列题模板的可以去小编主页博客里找哦)。在本题中,只需要全排列十个数字,组成一个4位数一个6位数,然后开三次方 和 四次方,判断是否相等即可。这是最简单的思路。
但是需要注意以下几点:1.开方可以用math.h下的pow();函数,此函数返回类型为double类型,因此不能完全相等,只需要相减绝对值小于一个很小的数即可。
2.在输出年龄时,如果直接输出整数,可能会使结果小1,因此这里我们加0.5防止答案出错。

代码:

#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int age=0;
int disp(int *a)
{
int m1=a[0]*1000+a[1]*100+a[2]*10+a[3];
int m2=a[4]*100000+a[5]*10000+a[6]*1000+a[7]*100+a[8]*10+a[9];
double a1=pow(m1,1/3.0);
double a2=pow(m2,1/4.0);
if(fabs(a1-a2)<0.000001 ){
age=(int)(a1+0.5);
return 1;
}
return 0;
}
int main ()
{
int a[]={0,1,2,3,4,5,6,7,8,9};
int n = 10;
do
{
if(disp(a))
{
printf("%d",age);
break;
}
}while(next_permutation(a,a+n));
return 0;
}

最后

以上就是魁梧滑板为你收集整理的蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于的全部内容,希望文章能够帮你解决蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部