Số bước lặp Collatz conjecture

Nhập vào số nguyên dương bất kì. Nếu chẵn thì chia hai, lẻ thì nhân ba cộng một. Lặp lại các bước trên cho đến khi xuất hiện 1. Tính số bước lặp.

Em nhập những vào số các số lớn như 7579309213675935 (đáp án là 1958) thì xuất ra là 512 . Vậy em sai ở đâu ạ.

#include <iostream>

using namespace std;

int main ()
{
    unsigned long long int n, lan;
    cin >> n;
    lan=0;
    while(n!=1){
        if(n%2==0){
            n=n/2;
        }
        else{
            n=3*n+1;
        }
        lan++;
    }
    cout << lan;
    return 0;
}
1 Like

Bạn phải dùng bignum mới tính được :smiley:

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?