首页 > 其他 > 详细

17-打印从1到最大的n位数

时间:2019-08-14 10:45:43      阅读:80      评论:0      收藏:0      [点我收藏+]

题目:输入数字n,按顺序打印从1到最大的n位十进制数。(大整数问题)

def print_max_n(n):
    res = [0 for i in range(n)]
    while not is_max(res):
        res=list_plus_1(res)
        print(res)

def is_max(arrys):
    for arr in arrys:
        if arr != 9:
            return False
    return True

# 返回加1后的列表
def list_plus_1(arr):
    length = len(arr)
    carry = 0

    i=-1
    while i>=-1*length:
        if i==-1:
            if arr[-1] + 1 < 10:
                arr[-1] = arr[-1] + 1
            else:
                arr[-1] = arr[-1] + 1 - 10
                carry = 1
        else:
            if arr[i]+carry<10:
                arr[i] = arr[i]+carry
                carry=0
            else:
                arr[i]=arr[i]+carry-10
                carry=1
        i-=1
    return arr

注:

list_plus_1:用列表模拟字符串,该函数用来实现数值加1的操作,最后输出字符串时,只需要将列表拼接输出即可

is_max:用于判断该当前列表表示的数是否为要输出的最大数9999...999,如果达到最大,返回True

print_max_n:先调用is_max判断是否已达到最大数,如果没达到,调用list_plus_1,实现加1操作。如果要完善输出,可以在加一个函数,用来输出优化,将列表最前边的若干0不输出

17-打印从1到最大的n位数

原文:https://www.cnblogs.com/kingshine007/p/11350373.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!