¶
2005-12-30 14:39:20 Accepted 3.256 436 56031 C++ 100 - The 3n + 1 problem
¶
Accepted .
했. 하 하 한 테트 항 했.
했. 하 하 한 테트 항 했.
¶
1. 2 히 클 . ( 큰 )
2. 트 함 . 판(& ), 2(right shift 1) - 행 향.
3. 한 확한 파 횟 히 . - .
4. 했 크 - 히 .
2. 트 함 . 판(& ), 2(right shift 1) - 행 향.
3. 한 확한 파 횟 히 . - .
4. 했 크 - 히 .
¶
~cpp // The 3n + 1 problem // UVa ID : 100 #include <iostream> using namespace std; int cycle_length(int input); int main() { int input1, input2; while (cin >> input1 >> input2) { int i; int max_count = -1; int temp = 0; // !! cout << input1 << " " << input2 << " "; // 클 (for ) if (input1 > input2) { int swap = input1; input1 = input2; input2 = swap; } for (i = input1; i <= input2; i++) { temp = cycle_length(i); // cycle legnth if (temp > max_count) max_count = temp; // 큰 max_count } cout << max_count << endl; } return 0; } // cycle length 하 int cycle_length(int input) { int argument = input; // int count = 0; // 트 while (true) { // if (argument == 1) { count++; break; } // LSB 0 , 1 . if ((argument & 1) == 0) { // 2 right shift 한 하 . argument >>= 1; count++; } else { // . argument = 3 * argument + 1; argument >>= 1; count += 2; } } return count; }