寻找两位数结果的Python程序
写一个程序,找出两个数字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