zoukankan      html  css  js  c++  java
  • 打印从1到最大的n

    题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999

    需考虑大数问题

    #-*-coding:utf-8-*-
    
    class print_N:
        def __init__(self,n):
             assert n >= 1, 'Input error:n must >= 1'
             self.data = ['0'] * n
             self.print_number()
             
        def print_number(self):
           
            while self.Increment():
                i = 0
                while self.data[i] == '0':
                    i += 1
                print ''.join(self.data[i:])
        
        def Increment(self):
            
            length = len(self.data)
            index = length - 1
            digit = int(self.data[index])
            digit += 1
            if digit == 10:  # 满10进1
                flag = True
                while flag and index > 0:
                    self.data[index] = '0'
                    index -= 1
                    tmp = int(self.data[index]) + 1
                    if tmp < 10:
                        flag = False
                        self.data[index] = str(tmp)
                if flag and index == 0:  # 当到达第一个位置时,如果符合满十进一的条件,则结束循环
                    return False
            else:
                self.data[index] = str(digit)
            
            return True
    if __name__ == '__main__':
        p = print_N(0)
        p = print_N(2)
        p = print_N(5) 
        
         
        
            
     
            
            
  • 相关阅读:
    Ajax技术
    java web中filter分析
    Async分析
    解释session
    XML相关知识
    开学第一课
    svn
    spa单页面应用(angular)
    angular
    webpack认识
  • 原文地址:https://www.cnblogs.com/guozw/p/9007366.html
Copyright © 2011-2022 走看看