2

近日在微信群里,一位朋友分享了一个小学的数学题目,题目大意如下:
"""
小学奥数题目:
有一个小于500的三位数abc,对这个三位数,甲乙丙丁有如下说法:
甲:abc可以被2整除3次;
乙:abc可以被3整除2次;
丙:abc可以被7整除;
丁:abc的各个数字之和是15;
已知甲乙丙丁有一个人说了谎话;
请问2a+b-c=?
"""
最开始准备使用枚举法尝试获取答案,但是结果繁琐.于是灵机一动.写了一个简单的程序来循环判断得到了答案.python示例代码如下:

def main():

# 定义变量num,代表这个整数
for num in range(1, 500):  # 循环1-500的整数
    a = num // 100  # 获得百位数
    b = (num // 10) % 10  # 获得十位数
    c = num % 10  # 获得个位数

    Fir = num % (2*2*2)  # 甲

    Sec = num % (3*3)  # 乙

    Thi = num % 7  # 丙

    For = a + b + c  # 丁

    if Fir == 0 and Sec == 0 and Thi == 0:  # 假设丁说谎,甲乙丙的条件成立
        print('丁说谎,abc=%s' % num)
        print('2a+b-c=%s' % (2*a + b - c))

    elif Fir == 0 and Sec == 0 and For == 15:  # 假设丙说谎,甲乙丁的条件成立
        print('丙说谎,abc=%s' % num)
        print('2a+b-c=%s' % (2 * a + b - c))

    elif Fir == 0 and Thi == 0 and For == 15:  # 假设乙说谎,甲丙丁的条件成立
        print('乙说谎,abc=%s' % num)
        print('2a+b-c=%s' % (2 * a + b - c))

    elif Sec == 0 and Thi == 0 and For == 15:  # 假设甲说谎,乙丙丁的条件成立
        print('甲说谎,abc=%s' % num)
        print('2a+b-c=%s' % (2 * a + b - c))

if name == '__main__':

main()

运行结果:
乙说谎,abc=168
2a+b-c=0
其实逻辑判断条件很简单,同时认为其实编程思想可以用来解决很多的实际生活问题,而非一味的码代码~


ceephoen
40 声望6 粉丝

coding~~~


下一篇 »
peewee爬坑