蓝桥杯真题---猜年龄

本文介绍了一个关于美国数学家维纳的趣事,他在年轻时曾因年龄的立方和四次方的数字特性引发关注。题目中提到,维纳年龄的立方是个4位数,四次方是个6位数,且这10个数字恰好包含了0到9每个数字各一次。通过简单的算法,我们可以推算出他当时的年龄。主要涉及数学和逻辑推理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

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

解决方案:flag标记法
空间复杂度:20
时间复杂度:o(n)
首先对题目进行分析:年龄的立方是4位数,可以确定扫描的下限是11

之后便是通过简单的定性,确定满足条件的数,将数的每一位放进一个数组之中,最后将数组进行遍历,确定flag值,如果只出现一次就是1,数组遍历9次即可,9次都是1的就是满足条件的数.`

#include <stdio.h>

#define false 0
#define ture  1

int flag[10];
int r[10];
/***********************************************************************************
* 函    数:int test(const int *ar)
* 功    能:将r[10]进行遍历,并记录flag值,通过flag值来判断是不是目标值
* 参    数:一维数组指针
* 返 回 值:正确 1 错误0
* 说    明:本函数时间复杂度为20 空间复杂度为20
************************************************************************************/
int test( const int *ar){
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值