Informatică, întrebare adresată de chiriacescu48elena, 9 ani în urmă

Fie număr natural n. Acestuia i se aplică în mod repetat următoarele transformări:
dacă n este par, devine n/2
dacă n 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.
Rezolvare

Răspunsuri la întrebare

Răspuns de TheSolver
0
#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;

}
Asta e solutia oficiala.

Răspuns de express
1
#include <iostream>
using namespace std;
long long nr,n,t;
int main()
{
    cin>>n;
    t=n;
    while(t!=1)
    {
        if(t%2==0) t=t/2;
             else t=t*3+1;
        nr++;
    }
    cout<<nr+1;
    return 0;
}

Alte întrebări interesante