2568 - Cub Prim
Definim prin număr cubprim, numărul natural obținut dintr-un număr prim la puterea a treia.
Cerința
Se dă un șir de N
numere naturale oarecare
.
a)
Să se afișeze M
– numărul de numere cubprim.
b)
Să se afișeze pe următoarele M
linii, descrescător după valoarea numărului cubprim de la cerința a)
, poziția pe care se află acest număr, numărul prim din care este format, precum și numărul cubprim astfel găsit.
Date de intrare
Fișierul de intrare cubprim.in
conține pe prima linie numărul N
, iar pe a doua linie N
numere naturale separate prin spații.
Date de ieșire
În fișierul cubprim.out
se afișează pe prima linie numărul de elemente găsite conform cerinței a)
.
Pe următoarele M
linii se afișază elementele găsite, separate printr-un spațiu conform cerinței b)
.
Exemplu:
cubprim.in
10 5 23 8 7 32 121 27 14 64 8
cubprim.out
3 7 3 27 3 2 8 10 2 8
Explicație
a)
Avem 3
numere care respectă cerința : 8
, 27
și 8
. Unde 8
este cubul lui 2
și 27
al lui 3
. Se observă că în șir apare și 64
care este cubul lui 4
dar numărul 4
nu este prim.
b)
Cubul cel mai mare format dintr-un număr prim este 27
, poziția lui în șir este 7
, urmat de numărul prim 3
care formează acest cub (3 * 3 * 3 = 27)
. Ultimele două linii sunt formate de numărul 8
găsit de două ori in șir, prima dată pe poziția 3
și apoi pe poziția 10
.
Încărcare soluție
Lipește codul aici
<syntaxhighlight lang="python" line="1"> a = [0] * 100005 b = [0] * 100005 c = [0] * 100005 d = [0] * 100005 n = int(input()) for i in range(1, n+1):
a[i] = int(input())
for i in range(1, n+1):
b[i] = int(input())
for i in range(1, n+1):
c[i] = int(input())
cnt = 0 i = 1 j = 1 while i <= n and j <= n:
if a[i] == b[j]: cnt += 1 d[cnt] = a[i] i += 1 j += 1 elif a[i] < b[j]: i += 1 else: j += 1
i = 1 j = 1 rez = -1 while i <= n and j <= cnt:
if c[i] == d[j]: rez = c[i] break if c[i] < d[j]: i += 1 else: j += 1
print(rez) </syntaxhighlight>