2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - C. 三羊献端
生活随笔
收集整理的這篇文章主要介紹了
2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - C. 三羊献端
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三羊獻瑞
觀察下面的加法算式:
祥 瑞 生 輝+ 三 羊 獻 瑞 -------------------三 羊 生 瑞 氣(如果有對齊問題,可以參看【圖1.jpg】)
其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。
請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多余內容。
Ideas
哈哈哈啊哈,我想到的第一種方法就是暴力枚舉每一個漢字,然后就寫出了garbage code 1,雖然garbage,但是爽啊。
開個玩笑,這code要是被看到怕不是要被笑死,其實這題就是找8個數然后排列一下組合在一起再check嘛,所以可以將0-9這10個數全排列之后取前8個數分別對應相應的漢字。
(突然想到Python支持中文變量命名,garbage code 2誕生,啊哈哈哈。)
Code
Python
garbage code 1
def solve1():"""三 羊 獻 瑞 祥 生 輝 氣"""for san in range(10):for yang in range(10):if yang != san:for xian in range(10):if xian != san and xian != yang:for rui in range(10):if rui != san and rui != yang and rui != xian:for xiang in range(10):if xiang != san and xiang != yang and xiang != xian and xiang != rui:for sheng in range(10):if sheng != san and sheng != yang and sheng != xian and sheng != rui and sheng != xiang:for hui in range(10):if hui != san and hui != yang and hui != xian and hui != rui and hui != xiang and hui != sheng:for qi in range(10):if qi != san and qi != yang and qi != xian and qi != rui and qi != xiang and qi != sheng and qi != hui:num1 = int("".join(map(str, [xiang, rui, sheng, hui])))num2 = int("".join(map(str, [san, yang, xian, rui])))num3 = int("".join(map(str, [san, yang, sheng, rui, qi])))if num1 + num2 == num3:print(f"num1 = {num1}, num2 = {num2}, num3 = {num3}")garbage code 2
def solve2():for item in permutations(range(10)):三, 羊, 獻, 瑞, 祥, 生, 輝, 氣 = item[0], item[1], item[2], item[3], item[4], item[5], item[6], item[7]num1 = int("".join(map(str, [祥, 瑞, 生, 輝])))num2 = int("".join(map(str, [三, 羊, 獻, 瑞])))num3 = int("".join(map(str, [三, 羊, 生, 瑞, 氣])))if num1 + num2 == num3:print(f"num1 = {num1}, num2 = {num2}, num3 = {num3}")Answer:1085
總結
以上是生活随笔為你收集整理的2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - C. 三羊献端的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年第六届蓝桥杯 - 省赛 - C
- 下一篇: 2015年第六届蓝桥杯 - 省赛 - C