0632 - Iepuri

De la Universitas MediaWiki

Cerința

Gigel are p iepuri pe care vrea să-i distribuie în n cuști astfel încât:

  • toți iepurii să intre în cuști
  • fiecare cușcă să conțină cel puțin un iepure
  • să nu existe două cuști cu același număr de iepuri
  • diferența dintre numărul maxim de iepuri dintr-o cușcă și numărul minim de iepuri dintr-o cușcă să fie minimă

Determinați o modalitate de distribuire a iepurilor în cuști care să respecte condițiile de mai sus.

Date de intrare

Programul citește de la tastatură numerele n și p.

Date de ieșire

Programul va afișa pe ecran n numere naturale, reprezentând numărul de iepuri din fiecare cușcă..

Restricții și precizări

  • 1 ≤ n ≤ 100

Exemplul 1

Input:

3 10

Output:

2 3 5

Exemplul 2

Input:

999999999999 8

Output:

Constrangeri neindeplinite

Rezolvare

def ver(n,p):
    if not(1<=n<=100):
        print("Constrangeri neindeplinite")
        exit()
    if not(1<=p<=1000000):
        print("Constrangeri neindeplinite")
        exit()

n, p = map(int, input().split())
ver(n,p)
v = [0] * 105

for i in range(1, n + 1):
    v[i] = i
    p -= i

for i in range(1, n + 1):
    v[i] += p // n

if p % n != 0:
    k = p % n
    i = n
    while i > 0 and k:
        v[i] += 1
        i -= 1
        k -= 1

for i in range(1, n + 1):
    print(v[i], end=" ")