2568 - Cub Prim

De la Universitas MediaWiki
Versiunea din 12 decembrie 2023 14:00, autor: Raul (discuție | contribuții) (Pagină nouă: 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 <code>N</code> numere naturale oarecare . <code>a)</code> Să se afișeze <code>M</code> – numărul de numere '''cubprim'''. <code>b)</code> Să se afișeze pe următoarele <code>M</code> linii, descrescător după valoarea numărului '''cubprim''' de la cerința <code>a)</code>, poziția pe care se află acest număr, numărul prim din car...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

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)