Attachment '2012-11-16.summacifr-nonr.py'

Download

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 Ввести N и число, вывести все N-значные числа, сумма цифр которых равна
   5 заданному числу.
   6 '''
   7 
   8 N,S = input()
   9 
  10 n,s,a = N-1,S-1,1
  11 
  12 while n<N:                              # Не пытались убрать первую цифру
  13     if n:                               # Цифр недостаточно
  14         c=max(0,s-9*(n-1))              # Минимально возможная цифра
  15         if c<10:                        # Это цифра?
  16             a, s, n = a*10+c, s-c, n-1  # Добавим её
  17             continue
  18     else:                               # Число готово
  19         print a
  20     while a%10 == 9 or s==0:            # Достигнута сумма или последняя цифра — 9
  21         a, s, n = a/10, s+a%10, n+1     # Убрать последнюю цифру
  22     a, s = a+1, s-1                     # Увеличить последнюю цифру

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.

You are not allowed to attach a file to this page.