알고리즘 트레이닝 – 콜라스 추측(Collartz conjecture)

콜라스 추측법은 값이 짝수라면 이를 반으로 나누고, n이 홀수라면 3을 곱한후 1을 더하는 과정을 값이 1이 될때까지 수행하는 과정을 반복한다.

입력 : 3

출력 : 3 10 5 16 8 4 2 1

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    while (true)
    {
        cout << n << " ";
        if (n == 1) break;
        if (n%2 == 0) n /= 2;
        else n = n*3+1;
    }
    cout << "\n";
}

입력값을 138367을 넣고 테스트를 해보면, int 값의 범위 초과로 오류가 발생한다. 단순히 값의 자료형을 long long 형으로 바꿔주면 해결된다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.