POJ1207 The 3n+1 problem
阿新 • • 發佈:2019-01-09
題目連結:http://poj.org/problem?id=1207
大致題意:給定演算法,可以計算一個整數的迴圈數。現在給定兩個數x,y,求這包括整兩個數之間的整數的最大迴圈數。
解題思路: ①寫出計算迴圈數的演算法
②注意輸入的數不一定是從小到大,首先要對輸入的兩個數進行排序。
③做一個迴圈找出這兩個之間所有整數的最大迴圈數
AC程式碼:
#include<iostream> using namespace std; int CycleLength(int i) { int length = 1; while(1) { if(i==1) break; else if(i%2==0) i = i / 2; else i = i * 3 + 1; length++; } return length; } int main() { int a,b; while(cin>>a>>b) { int i; int x = a<b?a:b; int y = a>b?a:b; int MaxLength = 0; for(i=x; i<=y; i++) { int temp = CycleLength(i); if(temp>=MaxLength) MaxLength = temp; } cout << a<<' '<<b <<' '<<MaxLength<<endl; } return 0; }