解题思路:不是很难,主要涉及10进制数和其他进制数的转换,我的注释比较详细
参考代码:
# 将n进制数转换成10进制 def ChangeToTen(n, m): result = 0 i = 0 while m != 0: result += m % 10 * pow(n, i) i += 1 m //= 10 return result # 将数字反转 def ChangeConvert(n): result = str(n) # 数字转字符串 result = list(result) # 字符串转列表 lenth = len(result) for i in range(lenth // 2): t = result[i] result[i] = result[lenth - 1 - i] result[lenth - 1 - i] = t result = ''.join(result) # 列表转字符串 return int(result) # 将10进制转换成n进制 def ChangeToOther(n, m): result = 0 i = 0 while m != 0: result += m % n * pow(10, i) i += 1 m //= n return result # 判断数字是否为回文 def IsHuiwen(n): result = str(n) # 数字转字符串 lenth = len(result) for i in range(lenth // 2): if result[i] != result[lenth - 1 - i]: return 0 return 1 if __name__ == '__main__': while 1: n = int(input()) m = int(input()) STEP = 0 flag = 1 if n == 10: if IsHuiwen(m): print("STEP=" + str(STEP)) else: while IsHuiwen(m) == 0: m += ChangeConvert(m) STEP += 1 if STEP > 30: flag = 0 print("Impossible!") break if flag: print("STEP=" + str(STEP)) else: if IsHuiwen(m): print("STEP=" + str(STEP)) else: while IsHuiwen(m) == 0: # # 将n进制数转换成10进制 # a = ChangeToTen(n, m) # # 将n进制数字反转 # b = ChangeConvert(m) # # 将n进制反转的数字转换成10进制 # c = ChangeToTen(n, b) # # 未反转的十进制与反转的十进制相加 # d = a + c # # 将上述相加产生的十进制转换成n进制 # m = ChangeToOther(n, d) m = ChangeToOther(n, ChangeToTen(n, m) + ChangeToTen(n, ChangeConvert(m))) STEP += 1 if STEP > 30: flag = 0 print("Impossible!") break if flag: print("STEP=" + str(STEP))
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1005 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:640 |
C二级辅导-公约公倍 (C语言代码)浏览:2122 |
大神老白 (C语言代码)浏览:642 |
蛇行矩阵 (C语言代码)浏览:751 |
C语言训练-求PI* (C语言代码)浏览:614 |
wu-理财计划 (C++代码)浏览:833 |
【金明的预算方案】 (C++代码)浏览:841 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:535 |
模拟计算器 (C++代码)浏览:806 |