0980 - Sir 4

From Bitnami MediaWiki
Revision as of 19:25, 4 January 2024 by Corjuc Eunice (talk | contribs) (Pagină nouă: Se consideră şirul de numere naturale: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21,... Se grupează numerele din şir astfel încât prima grupă, numerotată cu <code>1</code>, este formată din primul număr din şir (<code>1</code>), a doua grupă, numerotată cu <code>2</code>, este formată din următoarele două numere din şir (<code>3,5</code>), a treia grupă, numerotată cu <code>3</code>, este formată din următoarele trei numere din şir (<code>7,9,11</code>),…, a...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Se consideră şirul de numere naturale:

1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21,...

Se grupează numerele din şir astfel încât prima grupă, numerotată cu 1, este formată din primul număr din şir (1), a doua grupă, numerotată cu 2, este formată din următoarele două numere din şir (3,5), a treia grupă, numerotată cu 3, este formată din următoarele trei numere din şir (7,9,11),…, a n-a grupă din şir, numerotată cu n, este formată din următoarele n numere din şir, etc.

Cerinţe[edit | edit source]

Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale p, n şi k şi care să determine:

a) al câtelea număr din şir are valoarea p;

b) cel mai mare număr natural palindrom care poate fi obţinut folosindu-se cifrele tuturor numerelor din grupa a n-a a şirului dat, nu neapărat toate aceste cifre;

c) numărul grupei cu proprietatea că suma tuturor numerelor conţinute de aceasta este egală cu numărul k, dacă există o astfel de grupă.

Date de intrare[edit | edit source]

Programul citește de la tastatură, în acestă ordine, trei numere naturale p, n şi k.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran, în această ordine:

  • o valoare naturală reprezentând al câtelea număr din şir are valoarea p.
  • cel mai mare număr natural palindrom care poate fi obţinut folosindu-se cifrele tuturor numerelor din grupa a n-a a şirului dat, nu neapărat toate aceste cifre.
  • numărul grupei cu proprietatea că suma tuturor numerelor conţinute de aceasta este egală cu numărul k; dacă nu există o astfel de grupă se va scrie numărul 0

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

  • Numerele p, n şi k sunt naturale
  • 1 ≤ p ≤ 2.000.001, p număr natural impar
  • 1 ≤ n ≤ 50
  • 1 ≤ k ≤ 2.000.000.000

Exemplul 1[edit | edit source]

Input:

19 5 125

Output:

10

22922

5

Explicație:

  • În şir, valoarea 19 apare pe poziţia 10, aceşti 10 termeni termeni fiind: 1,3,5,7,9,11,13,15,17,19.
  • Numerele din grupa a 5-a sunt scrise cu ajutorul a 1 cifră de 1, 5 cifre de 2, 1 de 3, 1 de 5, 1 de 7, 1 de 9. Ce mai mare palindrom care se poate scrie cu aceste cifre este 22922.
  • Grupa 5 are suma egală cu k (21+23+25+27+29=125).

Exemplul 2[edit | edit source]

Input:

999999999999999 5 125

Output:

Constrangeri neindeplinite

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def is_valid_input(p, n, k):

   return (1 <= p <= 2000001) and (p % 2 == 1) and (1 <= n <= 50) and (1 <= k <= 2000000000)

p, n, k = map(int, input().split())

if not is_valid_input(p,n,k):

   print("Constrangeri neindeplinite")
   exit()

print((p + 1) // 2)

  1. palindrom

cifre = [0] * 10 for i in range(n * n - n + 1, n * n - n + 1 + 2 * n, 2):

   aux = i
   while aux:
       cifre[aux % 10] += 1
       aux //= 10

result = [] for i in range(9, -1, -1):

   result.extend([str(i)] * (cifre[i] // 2))

for i in range(9, -1, -1):

   if cifre[i] % 2 == 1:
       result.append(str(i))
       break

for i in range(10):

   result.extend([str(i)] * (cifre[i] // 2))

print("".join(result))

  1. palindrom

cbr = round(k ** (1 / 3)) if cbr ** 3 == k:

   print(cbr)

else:

   print(0)

</syntaxhighlight>