※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14920번 문제인 3n+1 수열이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/14920 

 

14920번: 3n+1 수열

다음의 점화식에 의해 정해지는 수열 C(n)을 생각하자: C(n+1) = C(n)/2 (C(n)이 짝수일 때) = 3*C(n)+1 (C(n)이 홀수일 때) 초항 C(1)이 자연수로 주어지면, 이 점화식은 자연수로 이루어지는 수열을 정한다.

www.acmicpc.net

주어진 수가 1이 될 때까지 3n+1 또는 n/2를 시행한 횟수를 세고, 그 횟수를 출력하자.

 

이러한 반복문을 작성할 경우 for문보다는 while문을 이용하여 구현하는 것이 편리하다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long long ll;

int main(){
    int ans = 1;

    ll N; cin >> N;
    while (N != 1) {
        ans++;
        if (N & 1) N = 3 * N + 1;
        else N /= 2;
    }

    cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 14918 // C++] 더하기  (0) 2022.04.24
[BOJ 14923 // C++] 미로 탈출  (0) 2022.04.24
[BOJ 14921 // C++] 용액 합성하기  (0) 2022.04.24
[BOJ 14922 // C++] 부분평균  (0) 2022.04.24
[BOJ 14939 // C++] 불 끄기  (0) 2022.04.23

+ Recent posts