无理想的闲鱼 发表于 2022-11-20 13:13:36

猜灯谜

本帖最后由 无理想的闲鱼 于 2022-11-21 14:46 编辑

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

A 村的元宵节灯会上有一迷题:

请猜谜 * 请猜谜 = 请边赏灯边猜

小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。
请你用计算机按小明的思路算一下,然后提交“请猜谜”三个字所代表的整数即可。

/我的思路:
for a in range(1,10):#请
for b in range(1,10):#猜
    for c in range(1,10):#谜
      if str(c**2)[-1] == str(a) and str(a**2) == str(a): #个位数相乘 看个位,百位数相乘 看开头
      print(f"{a}{b}{c}")

我不知道错在哪里了?

PS:根据回复的时间先后、以及答案正确性我来确定“最佳答案”,优秀的答案我也会进行评分的

lxping 发表于 2022-11-20 13:13:37

本帖最后由 lxping 于 2022-11-20 14:19 编辑

for a in range(1,10):#请
for b in range(0,10):#猜
    for c in range(0,10):#谜
      try:
            if str(c**2)[-1] == str(b) and str((100*a+10*b+c)**2)[-6] == str(a) and str((100*a+10*b+c)**2)[-5] == str((100*a+10*b+c)**2)[-2] and a != b != c:
                print(f"{a}{b}{c}")
      except IndexError:
            pass

      
897

zhangjinxuan 发表于 2022-11-20 20:38:10

本帖最后由 zhangjinxuan 于 2022-11-21 09:01 编辑

何必呢,可以判断长度啊,简单又明了
from sys import exit
for qing in range(1, 10):
    for cai in range(0, 10):
      for mi in range(0, 10):
            number = str(pow(qing * 100 + cai * 10 + mi, 2))
            if len(number) != 6:
                continue
            if number == str(qing) and number == str(cai) and number == number:
                print(qing, cai, mi, sep = '')
                exit()

tommyyu 发表于 2022-11-20 13:30:38

你这个代码没有判断结果的位数(这题好像是没有解的)

zhangjinxuan 发表于 2022-11-21 09:00:54

tommyyu 发表于 2022-11-20 13:30
你这个代码没有判断结果的位数(这题好像是没有解的)

无解这道题还有什么意义?

tommyyu 发表于 2022-11-21 09:06:28

zhangjinxuan 发表于 2022-11-21 09:00
无解这道题还有什么意义?

当时写代码的时候有一个条件写错了{:10_266:}

然后就没得出答案
页: [1]
查看完整版本: 猜灯谜