目录
1、三色球
2、车速问题
3、爱因斯坦的数学题
4、舍罕王的失算
5、马克思手稿
6、换分币
7、回文数
8、水仙花数
问题描述:
一个口袋有12个球,3个红色,3个白的,6个黑色的,从中任意取8个,问共有多少种可能的颜色搭配
问题分析:
设红球m个,白球n个,则黑球为8-m-n个。因此m的取值范围是[0,3], n的取值为[0,3], 黑球 8-m-n <= 6
代码设计:
#m的取值[0,3],n的取值[0,3],那么黑球的数量为 8-m-n范围<=6
num = 0
for m in range(0,4):
for n in range(0,4):
if 8-m-n <= 6:
num += 1
print(f"{num},:红球:{m},白球:{n},黑球{8-m-n}")
1,:红球:0,白球:2,黑球6
2,:红球:0,白球:3,黑球5
3,:红球:1,白球:1,黑球6
4,:红球:1,白球:2,黑球5
5,:红球:1,白球:3,黑球4
6,:红球:2,白球:0,黑球6
7,:红球:2,白球:1,黑球5
8,:红球:2,白球:2,黑球4
9,:红球:2,白球:3,黑球3
10,:红球:3,白球:0,黑球5
11,:红球:3,白球:1,黑球4
12,:红球:3,白球:2,黑球3
13,:红球:3,白球:3,黑球2
问题描述:
一汽车某时刻的里程数为 95859 ,两个小时后里程表上出现了一个新的对称数(仍为五位数),问车速和数
问题分析:
由题得到仍为5位数,故首位和末尾仍是9,则找到距离最近的对称数即可。
代码设计:
for num in range(95860,100000):
m = list(str(num))
if m[1] == m[3] and m[0] == m[4]:
b = int(''.join(m))
print(f"找到{b}")
break
找到95959
知识扩展:
问题描述:
有一条阶梯,若每步跨 2 阶,则剩最后 一 阶,若每步跨 3 阶,则最后剩 2 阶,若每步跨 5 阶,则最后剩 4 阶,若每步跨 6 阶,则最后剩 5 阶,只有每次跨 7 阶,最后才刚好不剩,问1-n,有多少个数能满足
代码设计:
def myfunc(n):
num = 0
for i in range(0,n+1):
if i%2==1 and i%3==2 and i%5==4 and i%6==5 and i%7==0:
print(f"台阶为:{i}")
num += 1
return num
while True:
print("请输入n")
x=int(input())
print(f"输入的n为:{x}")
A = myfunc(x)
print(f"有{A}个数满足")
问题描述:
棋盘上有64个格子,第一个格子放 1 粒米,第二个格子放 2 粒米,第三个格子放 4 粒米,第四个格子放 8 粒米,类推,问放满棋盘需要多少粒米
代码设计:
sum = 0
for i in range (1,65):
sum += 2 ** (i-1)
print(sum)
问题描述:
有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}")
男人:0,女人:20,小孩:10
男人:1,女人:18,小孩:11
男人:2,女人:16,小孩:12
男人:3,女人:14,小孩:13
男人:4,女人:12,小孩:14
男人:5,女人:10,小孩:15
男人:6,女人:8,小孩:16
男人:7,女人:6,小孩:17
男人:8,女人:4,小孩:18
男人:9,女人:2,小孩:19
男人:10,女人:0,小孩:20
问题描述:
将 5 元的人民币兑换成 1元,5角,1角的硬币,共有多少种不同的兑换方案
代码设计:
n=0
for x in range(0,6):
for y in range(0,11):
for z in range(0,51):
if x+0.5*y+0.1*z == 5:
print(f"1元:{x},5角:{y},1角:{z}")
n += 1
print(n)
问题描述:
打印所有不超过 n 的其平方具有对称性质的数
代码设计:
for i in range(1,257):
num=0
a = str(i)
b = len(str(i))
for j in range(1,i):
if j**2==i:
for z in range(0,b):
if a[z]==a[b-1-z]:
num += 1
if z == b-1:
print(i)
4
9
121
问题描述:
三位数,各位数的立方和等于本身
代码设计:
for i in range(100,1000):
a = list(str(i))
for j in range(0,len(a)):
a[j] = int(a[j])
if a[0]**3 + a[1]**3 + a[2]**3 == i:
print(i)
153
370
371
407