数字哑谜和回文
2012-09-17 21:07
639 查看
1.有这样的乘法算式:
人过大佛寺 * 我 = 寺佛大过人
每一个字都代表一个数字,不同的字表示不同的数字,找出这些数字。
解法:使用暴力搜索的方法,(因为这两天再看Python,所以刚好用Python写了下这个简单的程序):
找到的是 21978, 4
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
人过大佛寺 * 我 = 寺佛大过人
每一个字都代表一个数字,不同的字表示不同的数字,找出这些数字。
解法:使用暴力搜索的方法,(因为这两天再看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
相关文章推荐
- 读书笔记之编程之美 - 4.10 数字哑谜和回文
- 编程之美 数字哑谜和回文小程序
- 《编程之美》 Problem4_10 数字哑谜和回文
- 4.10 数字哑谜和回文
- 数字哑谜和回文
- 《编程之美》4.10数字哑谜和回文
- 数字哑谜和回文
- 数字哑谜和回文游戏
- 编程之美:第四章 数字之趣 4.10数字哑谜和回文
- 编程之美-数字哑谜和回文方法整理
- 编程之美:第四章 数字之趣 4.10_2数字哑谜和回文
- 编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都
- LeetCode-9.Palindrome Number(求回文数字)
- 【蓝桥杯】回文数字
- 数字哑谜
- LeetCode习题笔记——判断数字是否回文
- 回文数字
- (5) 判断字符串或数字是否是回文的
- 数字哑谜
- 求一组数字最小回文