0632 - Iepuri

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 100

Exemplul 1[edit | edit source]

Input:

3 10

Output:

2 3 5

Exemplul 2[edit | edit source]

Input:

999999999999 8

Output:

Constrangeri neindeplinite

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> 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=" ")

</syntaxhighlight>