手机扫描二维码答题
00:00:00
3.6.4 python编程解决数学问题
录音中...
1、爱因斯坦的数学题
问题描述:
有一条阶梯,若每步跨 2 阶,则剩最后 一 阶,若每步跨 3 阶,则
最后剩 2 阶,若每步跨 5 阶,则最后剩 4 阶,若每步跨 6 阶,则
最后剩 5 阶,只有每次跨 7 阶,刚好不剩,问从[1-500)整数中,有多少个
数能满足条件。请用python编程解决。
问题分析:
满足条件:每步跨2阶,剩余一阶,既为这数整除2余1;i%2==1
满足条件:每步跨3阶,剩余2阶,既为这数整除3余2;i%3==2
满足条件:每步跨5阶,剩余4阶,既为这数整除5余4;i%5==4
满足条件:每步跨6阶,剩余5阶,既为这数整除6余5;i%6==5
满足条件:每步跨7阶,剩余0阶,既为这数整除7余0;i%7==0
要满足所有条件,则用逻辑与(and)连接所有上述条件。
程序如下:
for
i
in
range
(0,500):
if
i%2==1
and
i%3==2
and
i%5==4
and
i%6==5
and
i%7==0:
print
(
"满足条件台阶为:"
,i)
*
1.
运行上述程序,满足上述条件的数是( )
【多选题】
A.118
B.119
C.328
D.329
2、一汽车某时刻的里程数为 95859 ,一小时后里程表上出现了一个新的对称数(仍为五位数),问新的对称数是什么?
*
2.
运行上述程序,满足条件的数是( )
3、舍罕王的失算:传说舍罕王打算重赏 象棋的发明人宰相西萨班达依尔。国王问他有何要求,这位聪明的大臣 “胃口”看来并不大,他跪着说:“陛下,请您在这个棋盘的第一个小 格内,赏我一粒麦子,在第二个小格内给两粒,第三个格内给四粒,按 照这样的比例关系,摆满棋盘上所有64格的麦粒。
问题描述:
棋盘上有64个格子,第一个格子放 1 粒米,第二个格子放 2 粒米,第三个格子放 4 粒米,第四个格子放 8 粒米,类推,问放满棋盘需要多少粒米?用python编程求解。
程序如下:
sum = 0
for
i
in
range
(1,65):
sum += 2 ** (i-1)
#等同于sum=sum+2**(i-1)
print
(sum)
3、30个人吃饭总共花了50元,每个男人吃饭要花 3元,每个女人吃饭要花 2元,小孩花 1元,问男人女人小孩各有多少人
程序如下:
for
x
in
range
(0,17):
for
y
in
range
(0,26):
if
3*x+2*y+30-x-y == 50:
print
(
f"男人:{x},女人:{y},小孩:{30-x-y}"
)
4、猴子吃桃问题:
一个猴子第一天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个。第二天早上吃了剩下桃子的1半,以后每天都吃前一天剩下桃子的1半零1个。到第10天早上想吃时,只剩下了1个桃子,求第一天摘了多少个桃子?
问题分析:
由于第一天的桃子并不确定,所以正序(正向)思维肯定是很麻烦的,最后一天的桃子是确定的,所以用倒序(逆向)思维,这题就非常之简单了。
前一天的桃子剩余量和后一天猴子所具有的量有关系式:
a
n
=2*(
a
(n+1)
+1)
程序如下:
total = 1
for
day
in
range
(9, 0, -1):
total = (total + 1) * 2
print
(
f"第{day}天的桃子数为:{total}"
)
5、鸡兔同笼:
《孙子算经》中就记载了这个有趣的问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?” 意思是,有若干只鸡和兔子关在同一个笼子里,从上面数有35个头,从下面数有94只脚,问:笼子中有多少只鸡?多少只兔子?
程序如下:
head=35
foot=94
for
c
in
range
(0,head+1):
#c 鸡的个数 ,r兔的个数
r=head-c
if
c*2+r*4==foot:
print
(
f"鸡有:{c}只,兔有:{r}只"
)
6、牛吃草问题:
已知:有一牧场,牧草每天在匀速生长,
20头牛,可以吃15天,
14头牛,可以吃24天,
问:28头牛可以吃几天?
解题思路
:需要知道哪些内在固定条件,
固定牧场的大小(size),以及每天草生长的速度(v)。
s:代表固定牧场的大小(固定)
v:代表每天草生长的速度(固定)
t:代表可以吃多少天(变化)
n:代表需要多少只牛可以在t时间内吃完草(变化)
由上式可得:
s+v*t1=n1*t1 ----------(1)
s+v*t2=n2*t2 ----------(2)
(1)-(2)得: v(t1-t2)=n1t1-n2t2
v=(n1t1-n2t2)/(t1-t2)
s=n1t1-vt1
程序如下:
n1,t1,n2,t2=20,15,14,24
#赋已知初值
v=
abs
(n1*t1-n2*t2)/
abs
(t1-t2)
s=n1*t1-v*t1
n=28
t=s/(n-v)
print
(
f'{n}头牛吃完需要{t}时间'
)
7、递归应用
:
说简单点就是:
一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归。用递归过程定义的函数,称为递归函数
。
注意:递归函数需要一个结束条件,即(出口),递归函数不能无限调用。
递归代码有哪些特点呢?
第一点:必须有一个函数;
第二点:函数体内要自己调用自己;
第三点:递归必须要有度,要不会一直调用陷入死循环,一般使用if进行条件判断;
第四点:到达一定度后必须要返回一个东西,也就是满足以上说的if条件开始返回;
递归例1:求5的阶乘
例2:递归实现著名的斐波那契数列:1,1,2,3,5,8,13,21,34,55,89...这个数列从第3项开始,每一项都等于前两项之和。输出该数列前20项数据。
通项写成如下形式:
程序如下:
例3、递归案例 ----- 计算数字累加
需求:
1)、定义一个函数 sum_numbers;
2 )、 能够接收一个 nums 的整数参数;
3)、计算 1 + 2+3 = num 的结果(方便理解,只循环调用3次);
函数调用示意图:
评价对象得分
字体大小