#2148
Pe Marte s-au descoperit N marțieni, identificați de către oamenii de știință de pe Pământ prin numerele de la 1 la N. Cercetările au dovedit că ADN-ul oricărui marțian X este format din mulțimea factorilor primi din descompunerea lui X.
Se știe că marțianul cu numărul de ordine Y îl moștenește pe marțianul cu numărul de ordine X dacă ADN(X) este inclus în ADN(Y), adică mulțimea factorilor primi ai lui X este inclusă în mulțimea factorilor primi ai lui Y.
Trebuie să specificăm că se pot întâlni situații extreme în care X îl moștenește pe Y dar și Y îl moștenește pe X, atunci când cei doi marțieni au ADN-urile egale.
Realizați un program care, considerând mulțimea celor N marțieni, determină numărul de perechi de marțieni (Y, X) pentru care Y îl moștenește pe X, unde 1 ≤ X ≤ N și 1 ≤ Y ≤ N.
ONIGIM 2017, Baraj juniori
| Problema | ADN | Operații I/O |
adn.in/adn.out
|
|---|---|---|---|
| Limita timp | 0.5 secunde | Limita memorie |
Total: 32 MB
/
Stivă 32 MB
|
| Id soluție | #63391263 | Utilizator | |
| Fișier | adn.cpp | Dimensiune | 1.79 KB |
| Data încărcării | 01 Martie 2026, 16:02 | Scor/rezultat | Eroare de compilare |
adn.cpp:1:1: error: stray '\' in program Pentru ( N \le 5,000,000 ), soluția eficientă este: ^ adn.cpp:1:1: error: stray '\310' in program adn.cpp:1:1: error: stray '\233' in program adn.cpp:1:1: error: stray '\304' in program adn.cpp:1:1: error: stray '\203' in program adn.cpp:3:1: error: stray '\304' in program * Precalculăm pentru fiecare număr **masca factorilor primi distincți** folosind un ciur. ^ adn.cpp:3:1: error: stray '\203' in program adn.cpp:3:1: error: stray '\304' in program adn.cpp:3:1: error: stray '\203' in program adn.cpp:3:1: error: stray '\310' in program adn.cpp:3:1: error: stray '\233' in program adn.cpp:4:1: error: stray '\304' in program * Numărăm de câte ori apare fiecare mască. ^ adn.cpp:4:1: error: stray '\203' in program adn.cpp:4:1: error: stray '\304' in program adn.cpp:4:1: error: stray '\203' in program adn.cpp:4:1: error: stray '\303' in program adn.cpp:4:1: error: stray '\242' in program adn.cpp:4:1: error: stray '\304' in program adn.cpp:4:1: error: stray '\203' in program adn.cpp:5:1: error: stray '\304' in program * Pentru fiecare mască ( A ), adăugăm la răspuns toate măștile ( B ) care sunt submulțimi ale lui ( A ). ^ adn.cpp:5:1: error: stray '\203' in program adn.cpp:5:1: error: stray '\304' in program adn.cpp:5:1: error: stray '\203' in program adn.cpp:5:1: error: stray '\304' in program adn.cpp:5:1: error: stray '\203' in program adn.cpp:5:1: error: stray '\304' in program adn.cpp:5:1: error: stray '\203' in program adn.cpp:5:1: error: stray '\304' in program adn.cpp:5:1: error: stray '\203' in program adn.cpp:5:1: error: stray '\310' in program adn.cpp:5:1: error: stray '\231' in program adn.cpp:5:1: error: stray '\310' in program adn.cpp:5:1: error: stray '\233' in program adn.cpp:7:1: error: stray '\' in program Complexitatea este aproximativ ( O(N \log \log N + M \cdot 2^k) ), unde ( k \le 7 ) pentru ( N \le 5 \cdot 10^6 ). ^ adn.cpp:7:1: error: stray '\' in program adn.cpp:7:1: error: stray '\' in program adn.cpp:7:1: error: stray '\' in program adn.cpp:7:1: error: stray '\' in program adn.cpp:7:1: error: stray '\' in program adn.cpp:9:1: error: stray '\304' in program Cod C++ fără comentarii: ^ adn.cpp:9:1: error: stray '\203' in program adn.cpp:9:1: error: stray '\304' in program adn.cpp:9:1: error: stray '\203' in program adn.cpp:11:1: error: stray '\`' in program \`\`\`cpp ^ adn.cpp:11:1: error: stray '\`' in program adn.cpp:11:1: error: stray '\`' in program adn.cpp:72:1: error: stray '\`' in program \`\`\` ^ adn.cpp:72:1: error: stray '\`' in program adn.cpp:72:1: error: stray '\`' in program adn.cpp:1:8: error: expected constructor, destructor, or type conversion before '(' token Pentru ( N \le 5,000,000 ), soluția eficientă este: ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema ADN face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.