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










