==== 소감 ==== 2005/02/18 Accepted 0:03.725 440 문제에 나와 있는 단순한 알고리즘을 제대로 구현만 해도 성공하는 쉬운 문제. 그러나 입력 최악기준 (1, 999999) 에 대해 수행시간이 턱없이 길다. ==== 코드 ==== {{{~cpp // no100 - The 3n+1 Problem #include using namespace std; int findMaxCycle(int a, int b); int main() { int a, b; // 입력되는 두 개의 수 while (cin >> a >> b) { int maxCycle = findMaxCycle(a, b); // 최대 사이클 cout << a << " " << b << " " << maxCycle << endl; } return 0; } int findMaxCycle(int a, int b) { if (a > b) { int t; t = a; a = b; b = t; } int nCycle; // 사이클 길이 long temp; // 과정 값은 32비트를 넘길 수도 있다. int maxCycle = 0; // 최대 사이클 if (a == 1 && b == 1) return 1; else if (a == 1) a++; int i; for (i=a; i<=b; i++) { nCycle = 1; temp = i; while (true) { if (temp % 2 == 0) { temp /= 2; nCycle++; if (temp == 1) break; } else { temp = (3 * temp + 1) / 2; nCycle += 2; } } if (maxCycle < nCycle) maxCycle = nCycle; } return maxCycle; } }}} ---- [3N+1Problem] [문보창]