ConcursC++17

pyk

Fie kk, nn și yy trei numere naturale.
Fie XX un șir format din nn numere naturale: x1,x2,x3,…,xnx_1, x_2, x_3, \ldots, x_n.
Fie PP produsul numerelor y,x1,x2,x3,…,xny, x_1, x_2, x_3, \ldots, x_n, adică: P=y⋅x1⋅x2⋅x3⋅…⋅xnP = y \cdot x_1 \cdot x_2 \cdot x_3 \cdot \ldots \cdot x_n.

Numărul PP este o “kk-putere” dacă există un număr natural zz astfel încât P=zkP=z^k.

Cerință

Scrieţi un program care să citească numerele kk, nn, x1x_1, x2x_2, x3x_3, …\dots, xnx_n şi care să determine:

  1. Cel mai mic număr și cel mai mare număr din șirul XX, formate doar din cifre identice;
  2. Descompunerea în factori primi a celui mai mic număr natural yy (y≥2y \geq 2) cu proprietatea că numărul P=y⋅x1⋅x2⋅x3⋅…⋅xnP = y \cdot x_1 \cdot x_2 \cdot x_3 \cdot \ldots \cdot x_n este o “kk-putere“.

Date de intrare

Fișierul de intrare pyk.in conține:

  • Pe prima linie, un număr natural CC reprezentând cerința din problemă care trebuie rezolvată (11 sau 22);
  • Pe a doua linie, numerele naturale kk și nn, separate printr-un singur spațiu;
  • Pe a treia linie, cele n numere naturale x1,x2,x3,…,xnx_1, x_2, x_3, \dots, x_n, separate prin câte un singur spaţiu.

Date de ieșire

Dacă C=1C=1, atunci prima linie a fişierului de ieşire pyk.out conţine două numere naturale, separate printr-un singur spațiu, reprezentând răspunsul la cerința 11 a problemei. Dacă nu există astfel de numere, prima linie a fișierului va conține valoarea 11.

Dacă C=2C=2, atunci fișierul de ieşire pyk.out conține:

  • pe prima linie, un număr natural mm reprezentând numărul de factori primi distincți din descompunerea în factori primi a numărului yy, determinat la rezolvarea cerinței 22;
  • pe fiecare dintre următoarele mm linii (câte o linie pentru fiecare factor prim din descompunerea în factori primi a lui yy), câte două valori FF şi EE, separate printr-un singur spaţiu, reprezentând factorul prim FF și exponentul EE al acestui factor din descompunerea în factori primi a lui yy.

Scrierea în fişier a acestor factori primi se va face în ordinea crescătoare a valorii lor.

Restricții și precizări

  • 2≤n≤50 0002 \leq n \leq 50 \ 000;
  • 2≤k≤1002 \leq k \leq 100;
  • 2≤x1,x2,x3,…,xn≤10 0002 \leq x_1, x_2, x_3, \dots, x_n \leq 10 \ 000;
  • 2≤y2 \leq y;
  • Pentru rezolvarea corectă a cerinţei 11 se acordă 1010 puncte;
  • Pentru rezolvarea corectă a cerinței 22 se acordă 9090 de puncte.

Exemplul 1

pyk.in

1
2 7
122 1111 5 4 88 123 999

pyk.out

4 1111

Explicație

Cerința este 11, k=2k=2, n=7n=7.
Numerele din șirul XX formate doar din cifre identice sunt: 11111111, 55, 44, 8888, 999999. Cel mai mic număr dintre acestea este 44, iar cel mai mare este 11111111.

Exemplul 2

pyk.in

2
3 6
12 5 60 125 4 36

pyk.out

3
2 1
3 2
5 1 

Explicație

Cerința este 22, k=3k=3, n=6n=6. Produsul celor 66 numere din șir este: 12⋅5⋅60⋅125⋅4⋅36=6480000012 \cdot 5 \cdot 60 \cdot 125 \cdot 4 \cdot 36 = 64800000.

y=90y=90 este cea mai mică valoare pentru care P=90⋅64800000=18003P=90 \cdot 64800000 = 1800^3 devine o “kk-putere“.

Descompunerea în factori primi a lui yy conține m=3m=3 factori primi: 21⋅32⋅512^1 \cdot 3^2 \cdot 5^1

Sursă și autori

ONI 2018, clasele 5. Carmen Mincă.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑