※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |