原文題目
題目大意
根據給予的演算法找出輸入兩數之間最大的執行次數
題目演算法
1. input n
2. print n
3. if n = 1 then STOP
4. if n is odd then n ←− 3n + 1
5. else n ←− n/2
6. GOTO 2
程式碼
#include <stdlib.h> #include <stdio.h> int alg(int input); int main(){ int i,j,k,datas[2]; int max=0,tmp; i=0; while(scanf("%d",&datas[i])!=EOF){ printf("%d ",datas[i]); if(i){ //防止逆迴圈 if(datas[0]>datas[1]){ tmp=datas[0];datas[0]=datas[1];datas[1]=tmp; } //防止範圍相等 if(datas[0]==datas[1]) max=alg(datas[0]); //正常情況 for(j=datas[0],k=0;j<datas[1];j++,k++){ tmp=alg(j);//計算執行次數 if(tmp>max)//找範圍內最大 max=tmp; } } i++; //一列結束 資料初始化 if(i>1){ i=0; printf("%dn",max); max=0; } } } //題目演算法 int alg(int n){ int counter=1; while(n!=1){ if(n%2==1) n=3*n+1; else n=n/2; counter++; } return counter; }