문 ¶
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; }