Cerința
Fie număr natural n
. Acestuia i se aplică în mod repetat următoarele transformări:
- dacă
n
este par, devinen/2
- dacă
n
este impar, devine3*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.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran numărul C
, reprezentând numărul de termeni din șirul transformărilor de mai sus.
Restricții și precizări
1 ≤ n ≤ 1 000 000
Exemplu
Intrare
6
Ieșire
9
Explicație
Exemplul corespunde șirului de mai sus.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Collatz:
#include <iostream>
using namespace std;
int main ()
{
long long int n;
int cnt = 1;
cin >> n;
while(n != 1)
{
cnt ++;
if(n % 2 == 0)
n /= 2;
else
n = 3 * n + 1;
//cout << n << " ";
}
cout << cnt;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #654 Collatz
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #654 Collatz de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!