寻找两位数结果的Python程序

2 投票
3 回答
795 浏览
提问于 2025-04-16 14:37

写一个程序,找出两个数字A和B(不要上网查,也不要手动去试),使得我们能得到一个两位数AB(比如A=8,B=9,那么这个数字就是89)。同时,要求AB乘以AB等于CAB,其中C是一个数字。也就是说,当你把AB平方后,会得到一个三位数。这个三位数的最后两位是AB,而第一位是某个C,这个C可能和A或B没有直接关系。

3 个回答

0

与其死磕,不如花两分钟好好想想这个问题。先想想A,A可能的最小值是多少?最大值又是多少?再想想B,B有一些特别的性质,只有10个数字中的4个符合这个特性。最后,你还是需要对A和B的一些数字进行循环,但如果你只用那些可能的数字集合,就能证明你在解决问题时动了一点脑筋。就像我之前说的,这个问题还可以推广到一些更有趣的情况,比如你可以找到一个数字ABCDEF,当它平方时会得到######ABCDEF。

附加问题:你觉得有没有一个最大的数字也具备这个特性呢?

2

在伪代码中,你可以简单地做一些像这样的事情:

def findAB (c):
    c = c multiplied by 100
    for a in 0..9: # or possibly 1..9
        for b in 0..9:
            set ab to a multiplied by 10 plus b
            if (ab multiplied by ab) is equal to (c plus ab):
                return (a,b)
    return nothing

我喜欢的伪代码语言和Python很相似,所以转换起来应该不会太难。但你首先要做的是理解它是怎么工作的。为此,你可以在脑海中运行这段代码,同时填写一个变量表,比如:

  c  |  a  |  b  |  ab  |  return
-----+-----+-----+------+----------
     |     |     |      |
     |     |     |      |
     |     |     |      |
     |     |     |      |

越早开始像机器一样思考,你就会成为更好的程序员——不过要记得不要把所有社交技能都抛掉,这些在你生活中的某些时刻还是会派上用场的 :-)

2

简单来说,就是在代码里:

for a in range(1,10):
   for b in range(10):
       ab = a*10+b
       ab2 = ab*ab
       if (ab2 % 100) == ab:
           print "a=",a,", b = ",b

撰写回答