博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于
阅读量:3961 次
发布时间:2019-05-24

本文共 1009 字,大约阅读时间需要 3 分钟。

问题描述

全排列模板:

美国数学家维纳(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 
#include
#include
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;}

转载地址:http://usrzi.baihongyu.com/

你可能感兴趣的文章
Python logging模块详解
查看>>
加载selenium2Library失败---robotframework环境搭建(RIDE无法启动?)
查看>>
Robot Framework 的安装配置和简单的实例介绍
查看>>
APP功能测试的7大注意点
查看>>
Python之unittest
查看>>
Fiddler之——Fiddler简介
查看>>
Fiddler之——Fiddler抓包分析
查看>>
Android开发之——activity跳转
查看>>
Android开发之——Menu 操作
查看>>
Android开发之——布局实例
查看>>
Android开发之——SQLite使用方法
查看>>
Python之SMTP发送邮件
查看>>
手动测试无法被取代的理由
查看>>
浅析移动测试:应用上线不“裸奔”的正确方式
查看>>
Robot Framework之元素定位
查看>>
性能测试方案之性能测试术语解释
查看>>
性能测试方案之性能测试方法
查看>>
测试方法之单元测试
查看>>
QTP之——Failed to run script. Description: 没有注册类别
查看>>
Perl+Eclipse配置
查看>>