您的位置:首页 > 其它

数字哑谜和回文

2012-09-17 21:07 639 查看
1.有这样的乘法算式:

  人过大佛寺 * 我 = 寺佛大过人

 每一个字都代表一个数字,不同的字表示不同的数字,找出这些数字。

  解法:使用暴力搜索的方法,(因为这两天再看Python,所以刚好用Python写了下这个简单的程序):

  找到的是 21978, 4

def checkN(n):
nums = []
while n > 0:
cur = n % 10
if cur in nums:
return True
else:
nums.append(cur)
n /= 10
return False

def checkC(n, c):
while n > 0:
if c == n % 10:
return True
n /= 10
return False

def is_right(p, q):
p_str = str(p)

q_list = list(str(q))
q_list.reverse()
q_str = ''.join(q_list)
if(p_str == q_str):
return True
else:
return False

for number in range(10000, 99999):
#   print cur          #用于测试的行
if(checkN(number)):
continue
for c in range(2, 10):
if checkC(number, c) :
continue
temp = number * c
if is_right(number, temp):
print number, c
temp = list(str(temp)).reverse()
if temp == str(number):
print number, c


2.已知回文数就是类似于11,22,33,……99,三位数中,101,111,121,……222,……999。那么N位数总共有多少个回文数。

  考虑前 upper(N/2)位,(upper表示对N/2向上取整)前N/2位数字决定了整个数字取值。第一个数字取1~9,有9种,后面每个都可以取0~9,有10种,所以

  共有 9 * 10 upper(N/2) 种取法。

3. 判断 (he)2 = she。各个数字

  252 = 625
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: