POJ 1207 The 3n + 1 problem

简单的3N+1问题,就是注意结果是between i and j,没有说明谁大谁小。

#include <cstdio>
using namespace std;
int result[10001]; 
int main(){
	for(int i=1;i<=10000;i++){
		result[i]=1;
		int k=i;
		while(k!=1){
			result[i]++;
			if(k%2==0)k=k/2;
			else k=k*3+1; 
		}
	}
	int s,e;
	while(scanf("%d%d",&s,&e)!=EOF){
		if(s>e){
			int t=e;
			e=s;
			s=t;
			printf("%d %d ",e,s); 
		}else{
			printf("%d %d ",s,e);
		}
		int res=result[e];
		for(int i=s;i<e;i++){
			if(result[i]>res)res=result[i];
		}
		printf("%d\n",res);
	}
}


你可能感兴趣的:(POJ 1207 The 3n + 1 problem)