#654
Fie număr natural n. Acestuia i se aplică în mod repetat următoarele transformări:
n este par, devine n/2n este impar, devine 3*n+1În 1937 matematicianul Lothar Collatz a formulat următoarea conjectură: pentru orice număr natural, în urma transformărilor numărul devine 1.
De exemplu, pentru n=6 se obține șirul: 6 3 10 5 16 8 4 2 1, șir care are 9 termeni.
Pentru un n dat, determinați numărul de termeni din șirul de transformări după regula de mai sus.
| Problema | Collatz | Operații I/O |
tastatură/ecran
|
|---|---|---|---|
| Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
| Id soluție | #64108838 | Utilizator | |
| Fișier | collatz.cpp | Dimensiune | 187 B |
| Data încărcării | 17 Aprilie 2026, 12:38 | Scor/rezultat | Eroare de compilare |
collatz.cpp: In function ‘int main()’: collatz.cpp:8:8: warning: init-statement in selection statements only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 8 | if(n%2==0; n=n/2) | ^ collatz.cpp:8:11: warning: statement has no effect [-Wunused-value] 8 | if(n%2==0; n=n/2) | ~~~^~~ collatz.cpp:8:17: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 8 | if(n%2==0; n=n/2) | ~^~~~ collatz.cpp:9:9: error: expected primary-expression before ‘else’ 9 | else | ^~~~ collatz.cpp: At global scope: collatz.cpp:11:2: error: expected unqualified-id before ‘while’ 11 | }while(n!=1); | ^~~~~ collatz.cpp:12:1: error: ‘cout’ does not name a type 12 | cout<<c; | ^~~~ collatz.cpp:13:1: error: expected unqualified-id before ‘return’ 13 | return 0; | ^~~~~~ collatz.cpp:14:1: error: expected declaration before ‘}’ token 14 | } | ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Collatz 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ă.