递归推导——猜年龄

一、问题描述

班里转来了一位新同学,他在介绍自己年龄的时候说:“我的年龄的平方是一个三位数,立方是一个四位数,四次方是一个六位数。三次方和四次方正好将0/1/2/3/4/5/6/7/8/9这10个数字全部覆盖。”,那么,该同学今年多大?

二、算法思想

首先将年龄的大致范围确定下来,因为17的四次方是83521,小于六位数;22的三次方是10648,大于四位数;因此该同学的年龄范围是大于17而小于22。然后将17~22之间的数进行列举,将计算得到的四位数和六位数的每位数字分别存放于数组中,再判断是否有重复或者部分数字未出现,最后将运算出的结果全部输出即可。

补充:

我之前的想法是将三次方m的各位数放在一个数组a中,四次方n的各位数放在另一个数组b中,然后两重循环比较这两个数组是否有相同的数字,一旦发现一个相同的数字,则说明本次的年龄x不符合题意,寻找下一个x。但是这个想法是错的,因为没有考虑到三次方m中或四次方n中,它们本身会有相同的数字出现,例如20的四次方是160000。

三、程序代码

#include <stdio.h> 

int main(){
    long m, n, a[10] = {0}, b[10] = {0};
    int x=18, i, j;
    do{
        m = x*x*x; //计算立方,并入数组a中
        for(i=3; i>=0; i--){
            a[i] = m%10;
            m = m/10;
        }

        n = x*x*x*x; //计算四次方,放入数组a中,注意下标
        for(i=9; i>=4; i--){
            a[i] = n%10;
            n = n/10;
        }

        //统计每个数字出现的次数
        for(i=0; i<10; i++){
            b[a[i]] ++;
        }
        //如果0~9每个数字都只出现一次,那么输出此时的x即为该同学的年龄
        for(i=0; i<10; i++){
            if(b[i] == 1){
                if(i == 9){
                    printf("\n%The age is %ld\n\n", x);
                }
            }
            else
                break;
        }

        x ++;//继续讨论
    }while(x<22);

    return 0;
}

四、运行结果

时间: 2024-10-06 09:38:53

递归推导——猜年龄的相关文章

用Python写猜年龄游戏

菜鸟的第一个程序:用python写猜年龄,0基础写起来真他娘的累,一个简单的程序写了几个小时,终于马马虎虎写好了. 许多刚入行的新手们经常问有什么捷径能快速学会写代码?答案是没有的,只有一个字:练! #!/usr/bin/env python # Author:William Huang my_age = 29 # 先设定好正确的答案 count = 0 # 设定好计数器 while True: count += 1 # 计数器自加1 if count <= 3: # 设定次数,小于等于3次 u

猜年龄游戏

age=22 counter=0 for i in range(10): if counter<3: guess_num=int(input("请猜年龄")) if guess_num==age: print("恭喜你猜对了") break elif guess_num >age: print("太大了") else: print("太小了") else: continue_isntit=input("你

微软推出一个非常有趣的网站—— How-old.net 看照片猜年龄!

周末休闲一下啊!! 微软推出一个非常有趣的网站-- How-old.net 看照片猜年龄!这是由微软机器学习团队的工程师们开发的一个"年龄测试"的新玩意,通过图像脸部识别和大数据分析,可以快速识别出照片中的人的性别和年龄!而且还能一次判断多人,网上大家玩得很欢乐,也来试试看你的颜值被认为是几岁吧-- 网址: http://how-old.net/#results

登录接口,猜年龄

编写登陆接口基础需求:1.    让用户输入用户名密码2.  认证成功后显示欢迎信息3.    输错三次后退出程序升级需求:4.    可以支持多个用户登录 (提示,通过列表存多个账户信息)5.    用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里) #!/usr/bin/env python # -*- coding:utf-8 -*- # by wk ''' 说明: 如果登录用户在用户列表里,每个用户只有3次登录机会,失败后锁定账户,下

Python 猜年龄的游戏

猜年龄的游戏: 游戏规则: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如何猜对了,就直接退出 1 age=18 2 count=True 3 while count: 4 5 for i in range(3): 6 guess_age=int(input('你猜我的年龄是多大:')) 7 if guess_age < age: 8 print('猜小了,往大里猜') 9 elif gues

python_猜年龄,有三次机会

猜年龄,有三次机会,如何做? 1. 检查 输入的数据是否合法,通过异常try来处理,并记录 输入错误次数 2. 通过累加器,判断是否猜了3次,并提示还剩余多少的机会 3. 当3次错误,跳出 #!/usr/bin/python3 def guess_age(name, real_age): '''猜年龄,有三次机会''' count = 0 print('%s来猜猜我的年龄来' % name) while True: error_number = 0 while True: # 验证是否输入合法

蓝桥杯猜年龄

标题:猜年龄 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍".小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊." 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数字,请通过浏览器提交答案.不要书写任何多余的内容. public static void main(String args[]){ for(int i=0;i<100;i++){ for(int j=0;j<i+8;j+

小程序1-生肖猜年龄

输入生肖猜测你的年龄,输入年龄得出你的生肖.ps:这里的年龄实岁而不是虚岁. 效果图: 源代码: package age; import java.text.SimpleDateFormat;import java.time.Year;import java.util.Date;import java.util.Scanner; import javax.xml.soap.SAAJResult; public class age { static String []age = {"鼠"

随机数猜年龄游戏

随机数猜年龄游戏 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author: davie # This is a guess the number game import random secretNumber = random.randint(1,20) print("I'm thinking of a number between 1 and 20.") # Ask the player to guess 6 times. for