前言:五年级上册的数论是五年级学生的一大痛点,也是课外培训机构特别爱辅导的知识点之一。
这次带来的是一道需要用到倍数特征和枚举法的题。
别觉得简单,如果把小学题目难度分为10级,这道题对学生来说没9级也有8级了。
(其实小学阶段压根就没几个人学得会“有序枚举”)
"""
Author:Sprite
Date:2022/4/16 11:14
Have a nice day ~~~
"""
# 从给定的任意4个数字中选3个组成的2、3的公倍数中,最小的是多少?
# 注意:由于学生不可能使用枚举法(即找出所有6的倍数)做这个题,所以这里代码也尽量按照学生思路去写
# 录入题目
a = int(input('请输入第一个数字:'))
b = int(input('请输入第二个数字:'))
c = int(input('请输入第三个数字:'))
d = int(input('请输入第四个数字:'))
# Step1::从小到大排序
a, b, c, d = sorted([a, b, c, d])
print('①按照从小到大排序为:', end='')
print(a, b, c, d, sep=',')
# Step2:先根据3的倍数这个条件选出3个数字和是3的倍数的数字
# 注意:小学生是不可能会直接4选3的枚举的,所以要把4选3巧妙地等效为4选1,这里得讲清楚点
# 这样学生就能很容易回答出一共只有4种情况
print('②满足数字和是3的倍数的组合有:', end='')
# 在循环之前先创建一个列表用来存第三步的偶数
list_2 = []
for x in [a, b, c, d]:
list_1 = [a, b, c, d]
list_1.remove(x)
if sum(list_1) % 3 == 0:
a1, b1, c1 = list_1
print(list_1, end=' ')
# Step3:接着根据2的倍数这个条件判断出每组数字所能组合出的最小偶数
# 具体做法是将3个数字里面的偶数放到个位,如果有多个偶数,就把大的放个位
# 满足要求的先全部丢进list_2中
# 先讨论3个数字中没有0的情况,因为0不能放首位,要麻烦一些
if a1 != 0 and b1 != 0 and c1 != 0:
if a1 % 2 == 0 and b1 % 2 == 0 and c1 % 2 == 0:
list_2.append(a1 * 100 + b1 * 10 + c1)
elif a1 % 2 == 0 and b1 % 2 == 0:
list_2.append(a1 * 100 + c1 * 10 + b1)
elif a1 % 2 == 0 and c1 % 2 == 0:
list_2.append(a1 * 100 + b1 * 10 + c1)
elif b1 % 2 == 0 and c1 % 2 == 0:
list_2.append(a1 * 100 + b1 * 10 + c1)
elif a1 % 2 == 0:
list_2.append(b1 * 100 + c1 * 10 + a1)
elif b1 % 2 == 0:
list_2.append(a1 * 100 + c1 * 10 + b1)
elif c1 % 2 == 0:
list_2.append(a1 * 100 + b1 * 10 + c1)
# 再讨论3个数字中有0的情况,全是0不讨论。
# 由于0是最小的数字,而前面用了sorted函数,所以0必然出现在前面
elif a1 == 0 and b1 == 0 and c1 != 0:
list_2.append(c1 * 100)
elif a1 == 0 and b1 != 0 and c1 != 0:
if b1 % 2 == 0 and c1 % 2 == 0:
list_2.append(b1 * 100 + c1)
elif b1 % 2 == 0 and c1 % 2 != 0:
list_2.append(c1 * 100 + b1)
elif b1 % 2 != 0 and c1 % 2 == 0:
list_2.append(b1 * 100 + c1)
elif b1 % 2 != 0 and c1 % 2 != 0:
list_2.append(b1 * 100 + c1 * 10)
# Step4:接着再比较刚放进list_2的最小的三位偶数,决出最终赢家!
print()
print('③每组中最小的三位偶数分别是:', list_2, sep='')
print('④最终最小的三位偶数是:', min(list_2), sep='')
最后好消息就是这道题最多考填空题,也就值一两分吧。。。
下次想弄个分段计费问题,这才是真正的重中之重,四五六年级压轴题常客了
程序运行展示:

这篇博客介绍了一道针对五年级学生的数论难题,涉及2、3的公倍数和有序枚举概念。通过排序、筛选和判断偶数位置,找到最小的三位偶数解。虽然看似简单,但对学生来说难度颇高,适合课外辅导。程序实现了这一解题过程,演示了如何巧妙处理问题。

被折叠的 条评论
为什么被折叠?



