中国古代数学问题

中国古代数学问题

📑前言

本文主要是【】——简单使用的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

第1关:鸡兔同笼

"""
在同一行内输入用空格分隔的两个整数,代表头和脚的数量,计算并输出笼中各有多少只鸡和兔,
如无解则输出“Data Error!”,函数无返回值。
输入:35 94
输出:有23 只鸡,12 只兔
输入:100 5
输出:Data Error!
"""
m,n = map(int, input().split()) #读入以空格分隔的两个整数,表示头和脚的数量
##############Begin#####################
i = 0
if m<0 or n<0:
    print("Data Error!")
else:
    for i in range(0,m+1,1):
        if i*2+(m-i)*4 == n:
            print(f'有{i}只鸡,{m-i}只兔')
            break
    else:
        print("Data Error!")

第2关:物不知数

"""一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;
7个7个数也会多出2个。输入一个正整数,从小到大依次输出所有不超过输入数字
且满足条件的物品数量,有多个答案时每行输出一个。
例如输入:200
输出:
23
128
"""
n = int(input())
##############Begin#####################
flag = 0
for i in range(1,n+1):
    if i%3==2 and i%5==3 and i%7==2:
        flag = 1
        print(i)
if flag == 0:
    print('No solution!')

第3关:二鼠打洞

"""有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打洞一尺,小老鼠也是打洞一尺。
大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。计算并输出它们几天可以相逢,
相逢时各打了多少尺。
输入格式:输入1 个整数,代表墙的厚度,单位为尺
输出格式:
第一行输出1 个整数,表示相遇时所需的天数
第二行输出2 个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1 位数字。
"""
n = int(input()) #墙壁的厚度
rat, mouse, day, time = 1, 1, 0, 1 #大鼠速度、小鼠速度、天数、当天工作时长(1表示工作一整天)
distance_of_rat, distance_of_mouse = 0, 0 #大鼠路程、小鼠的路程
while n > 0:
################Begin#######################
    if n - mouse - rat < 0: #第一天打洞完成
        time = n / (mouse + rat)    #算出需要时间
    n = n - mouse - rat    #剩余墙厚
    distance_of_mouse = distance_of_mouse + time * mouse
    distance_of_rat = distance_of_rat + time * rat
    rat = rat * 2    #大老鼠每天进度
    mouse = mouse / 2    #小老鼠每天进度
    day = day + 1    #时间过去一天


################End#######################
print(day)
print(round(distance_of_mouse, 1), round(distance_of_rat, 1)) #使用round函数来保留小数点后一位

第4关:宝塔上的琉璃灯

"""有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,
已知共有765 盏琉璃灯,计算并输出每层各有多少盏琉璃灯。
输出为8行,每行都是一个正整数,从上往下数字依次增大,每个数字代表本层宝塔上的琉璃灯数目。
"""
first = 1 #第一层琉璃灯
# while True:
#     lantern = []  #列表来保存所有层的琉璃灯
#     m = first
#     for i in range(8): #一共8层
#         lantern.append(m) #将本层灯数目加入列表
#         m = m * 2 #下一层数目翻倍
    #################Begin#############################
from itertools import count
for first in count(1,1):
    floors=[first*(2**i) for i in range(8)]
    if sum(floors)==765:
        for index,value in enumerate(floors,start=1):
            print(f'{value}')
        break

    #################End#############################

第五关:李白买酒

"""大诗人李白,提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,
遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?
"""
#解题思路:让李白按路线逆向走一遍
wine =0  #最后酒壶空了
################Begin#################
for i in range(5):
    #遇到鲜花
    wine = wine +1
    #遇到酒店
    wine = wine / 2

################End#################
print(wine) #原来有多少斗酒

📑文章末尾

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风与他

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值