【蓝桥杯训练】第二天1259、1260

1259

[蓝桥杯2015初赛]三羊献瑞

观察下面的加法算式:

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
输出
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

注意

答案唯一,相同的汉字代表相同的数字,不同的汉字代表不同的数字

算法

下面说的进位都是低位来的
zh = ['祥', '瑞', '生', '辉', '三', '羊', '献', '气']

  1. 首先想到这个些汉字代表的是否是0-9之间的数字
  2. 总计8个汉字,代表8个不同的数字
  3. 可以确定“三” = 1,因为两个数字相加最大18,再加个进位,也就19;
  4. 接着,可知其他都非1,“祥”+“三” 有进位,且“羊”!=1;
    4.1 “祥” = 9, 无进位 or “祥” = 8, 有进位,都会使得 “羊” = 0
    4.2 假设“祥” = 9, 无进位;“瑞”!= “生” ,必然有低位进位:
    “生” = “瑞” + 1,那么“瑞” = “生” - 1,因为是加法,且要向前进位:
    所以“献” = 9,与“祥” = 9矛盾,只能是“献” = 8,有低位进位;
    由于个位“辉” + “瑞” > 10,且只有765432可选,最终可以推出:
    '祥' = 9, '瑞' = 5, '生' = 6, '辉' = 7, '三' = 1, '羊' = 0, '献' = 8, '气' = 2

最终可得:“三羊献瑞”为:1085

题解

print('1085')



1260

[蓝桥杯2015初赛]加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+...+1011+12+...+2728+29+...+49 = 2015 就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交。
(对于示例,就是提交10)。
输出
注意:需要你提交的是一个整数,不要填写任何多余的内容。

注意

交换的 两个 、不相邻 的加号。

算法

枚举出使得改变符号后数值增加790

题解

结果:print('16')

for i in range(1,46+1):
    for j in range(i+2,48+1):
        temp = i*(i+1)+j*(j+1)-2*i-1-2*j-1
        if temp == 790:
            print(i,j)

输出:
10 27
16 24

posted @ 2020-01-18 23:45  燕山北  阅读(406)  评论(0编辑  收藏  举报