๋ฐ์ํ
https://www.acmicpc.net/problem/14920
๋ฌธ์
๋ค์์ ์ ํ์์ ์ํด ์ ํด์ง๋ ์์ด C(n)์ ์๊ฐํ์:
C(n+1) = C(n)/2 (C(n)์ด ์ง์์ผ ๋)
= 3*C(n)+1 (C(n)์ด ํ์์ผ ๋)
์ดํญ C(1)์ด ์์ฐ์๋ก ์ฃผ์ด์ง๋ฉด, ์ด ์ ํ์์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ง๋ ์์ด์ ์ ํ๋ค. ์๋ฅผ ๋ค์ด, C(1)=26์ด๋ฉด, ๋ค์์ ์์ด์ด ๋๋ค.
26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1, ...
์ด ๊ฒฝ์ฐ, ์์ด์ ๋ท๋ถ๋ถ์ 4, 2, 1 ์ด ๋์์ด ๋ฐ๋ณต๋๋ค. ์ค์ ๋ก C(1)์ด 5×260๋ณด๋ค ์์ ์์ฐ์์ธ ๋ชจ๋ ์์ด์ ์ธ์ ๊ฐ๋ 4, 2, 1๋ก ๋๋๊ฒ ๋๋ค๋ ๊ฒ์ด ์๋ ค์ ธ ์๋ค.
์ฃผ์ด์ง ์ ๋ ฅ C(1)์ ๋ํ์ฌ C(n)์ด ์ฒ์์ผ๋ก 1์ด ๋๋ n์ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ
C(1); 1 ≤ C(1) ≤ 100000
์ถ๋ ฅ
C(n)์ด ์ฒ์์ผ๋ก 1์ด ๋๋ n
ํ์ด
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int solution(int c1) {
int prev = c1, next;
for(int i=1; true; i++) {
if(prev == 1)
return i;
if(prev%2 == 0){
next = prev/2;
} else {
next = 3*prev + 1;
}
prev = next;
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int c1;
cin >> c1;
cout << solution(c1);
return 0;
}
/*
*/
๋ฐ์ํ
'๐ฆ Chango > ๐ซ First Solve at School' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ B4][C++] ๋ฐฑ์ค 13985๋ฒ: Equality (0) | 2022.12.30 |
---|---|
[BOJ S4][C++] ๋ฐฑ์ค 14495๋ฒ: ํผ๋ณด๋์น ๋น์ค๋ฌด๋ฆฌํ ์์ด (0) | 2022.12.29 |
[BOJ B2][C++] ๋ฐฑ์ค 2153๋ฒ: ์์ ๋จ์ด (0) | 2022.12.13 |
[BOJ B2][C++] ๋ฐฑ์ค 1773๋ฒ: ํญ์ฃฝ์ผ (0) | 2022.12.11 |
[BOJ B3][C++] ๋ฐฑ์ค 2863๋ฒ: ์ด๊ฒ ๋ถ์? (0) | 2022.12.10 |