0632 - Iepuri

From Bitnami MediaWiki
Revision as of 17:40, 4 January 2024 by Corjuc Eunice (talk | contribs) (Pagină nouă: = Cerința = Gigel are <code>p</code> iepuri pe care vrea să-i distribuie în <code>n</code> 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ții...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>