天空一抹蓝


私信TA

用户名:uq_93105092774

访问量:6558

签 名:

等  级
排  名 1909
经  验 2566
参赛次数 0
文章发表 32
年  龄 0
在职情况 学生
学  校 西华师范大学
专  业

  自我简介:

TA的其他文章

解题思路:不是很难,主要涉及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 人评分

  评论区

  • «
  • »