두 수 i, j 를 입력받은 다음, 그 사이 값에 대하여 규칙에 따라 연산을 했을 때, 제일 연산을 많이 수행했을 때의 횟수를 출력하는 문제.
규칙
- 홀수이면 *3을 하고 1을 더한다.
- 짝수이면 /2를 한다
더보기
#include<iostream>
#include<algorithm>
#pragma warning(disable:4996);
using namespace std;
int solve(int num) {
int cnt = 1;
while (num > 1) {
cnt++;
if (num % 2 == 0) {
num /= 2;
}
else {
num = num * 3 + 1;
}
}
return cnt;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int i, j, length;
while (cin >> i && cin >> j) {
length = 0;
int here = min(i, j);
while (here <= max(i,j)) {
length = max(length, solve(here));
here++;
}
cout << i << " " << j << " " << length << "\n";
}
return 0;
}