0980 - Sir 4
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
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
Programul citește de la tastatură, în acestă ordine, trei numere naturale p, n şi k.
Date de ieșire
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ărul0
Restricții și precizări
- Numerele
p,nşiksunt naturale 1 ≤ p ≤ 2.000.001,pnumăr natural impar1 ≤ n ≤ 501 ≤ k ≤ 2.000.000.000
Exemplul 1
Input:
19 5 125
Output:
10
22922
5
Explicație:
- În şir, valoarea
19apare pe poziţia10, aceşti10termeni termeni fiind:1,3,5,7,9,11,13,15,17,19. - Numerele din grupa a
5-a sunt scrise cu ajutorul a1cifră de1,5cifre de2,1de3,1de5,1de7,1de9. Ce mai mare palindrom care se poate scrie cu aceste cifre este22922. - Grupa
5are suma egală cuk(21+23+25+27+29=125).
Exemplul 2
Input:
999999999999999 5 125
Output:
Constrangeri neindeplinite
Rezolvare
<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)
- 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))
- palindrom
cbr = round(k ** (1 / 3)) if cbr ** 3 == k:
print(cbr)
else:
print(0)
</syntaxhighlight>