0
点赞
收藏
分享

微信扫一扫

六角填数,奇怪的分式

双井暮色 2022-03-11 阅读 161

文章目录

六角填数

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如下图所示六角形中,填入 1 ~ 12的数字。使得每条直线上的数字之和都相同。

在这里插入图片描述

图中,已经替你填好了 3 个数字,请你计算星号位置所代表的数字是多少?

运行限制
最大运行时间:1s
最大运行内存: 128M

分析

在这里插入图片描述

  • 我们算出一共用了4*6=24个点,每个点都被用两次,所以点数内部值的总和为(1+...+12)*2=156,而又有6条边,所以每一条边的和为156/6=26

运行代码

from itertools import permutations


for i in permutations([2,4,5,6,7,9,10,11,12]):
    if i[0]+i[6]+i[7]+3 != 26:
        continue
    if i[0]+i[4]+i[5]+8 != 26:
        continue
    if i[3]+i[8]+ 8 + 3 != 26:
        continue
    if i[2]+i[3]+i[4]+1 != 26:
        continue
    if i[1]+i[5]+i[6]+1 != 26:
        continue
    if i[1]+i[2]+i[7]+i[8] != 26:
        continue
    print(i[3])
    break

通过截图

在这里插入图片描述

奇怪的分式

题目描述
上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼! 对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢? 请写出所有不同算式的个数(包括题中举例的)。显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。

在这里插入图片描述

分析

  • 四重循环解决一切,相等的分子分母continue
  • 注意这里不会重复,比如左边分子从1到9,右边分子也从1到9,分子组合起来就是从11到99(中间一些末位0的数字不计),这就算一个没有重复的过程,分母同理。
  • 问题抽象:a2/a1+b2/b1 = (a2*10+b2) /(a1*10+b1)
  • 浮点最恶心的地方:(a2/a1)+(b2/b1)这会降低精度,导致答案不完整,需要写成(a2*b2)/(a1*b1)
  • 总之,就是能少除就少除。

运行代码

res = 0
for a1 in range(1,10): # a的分母
    for a2 in range(1,10): # a的分子
        if a1 == a2:
            continue
        for b1 in range(1,10): # b的分母
            for b2 in range(1,10): # b的分子
                if b1 == b2:
                    continue
                if (a2*b2)/(a1*b1) == int(str(a2)+str(b2))/int(str(a1)+str(b1)):
                    res+=1

print(res)

通过截图

在这里插入图片描述

如有错误,敬请指正,欢迎交流,谢谢♪(・ω・)ノ

举报

相关推荐

0 条评论