※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 5679번 문제인 Hailstone Sequences이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/5679
5679번: Hailstone Sequences
Consider the sequence formed by starting from a positive integer h0 and iterating with n = 1, 2, ... the following definition until hn = 1: hn = hn-1 / 2 (if hn-1 is even) hn = 3 × hn-1 + 1 (if hn-1 is odd) For instance, if we start with h0 = 5 the follow
www.acmicpc.net
주어지는 수가 우박수(콜라츠 수열)의 규칙을 따라 1로 수렴해갈 때 중간단계에서 등장하는 가장 큰 수를 찾는 문제이다.
주어지는 각 수에 대하여 그 수가 1이 될 때까지 짝수면 나누기 2를, 홀수면 곱하기3 더하기1을 반복하고 각 계산결과를 기존 계산결과들의 최댓값과 비교해 답을 얻어내자.
맨 처음 시작할 때 주어지는 수가 답이 될 수도 있음에 유의해 답을 구하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
while (N) {
int ans = N;
while (N > 1) {
if (N & 1) N = 3 * N + 1;
else N >>= 1;
ans = max(ans, N);
}
cout << ans << '\n';
cin >> N;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 21347 // C++] Keyboardd (0) | 2022.08.30 |
---|---|
[BOJ 24313 // C++] 알고리즘 수업 - 점근적 표기 1 (1) | 2022.08.29 |
[BOJ 2999 // C++] 비밀 이메일 (0) | 2022.08.28 |
[BOJ 2057 // C++] 팩토리얼 분해 (0) | 2022.08.28 |
[BOJ 24855 // C++] Natives (0) | 2022.08.28 |