2568 - Cub Prim: Difference between revisions
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... |
No edit summary |
||
Line 34: | Line 34: | ||
=== Lipește codul aici === | === Lipește codul aici === | ||
1 | <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> | |||
Latest revision as of 13:57, 14 December 2023
Definim prin număr cubprim, numărul natural obținut dintr-un număr prim la puterea a treia.
Cerința[edit | edit source]
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[edit | edit source]
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[edit | edit source]
Î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:[edit | edit source]
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[edit | edit source]
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[edit | edit source]
Lipește codul aici[edit | edit source]
<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>