HDOJ3782(xxx定理)

/* Note:Your choice is C IDE */
#include <stdio.h>
#include<time.h>
#include<stdlib.h>
int vis[1005];
int num;
void fun()
{
	int i,j;int cnt=0;
	vis[1]=0;
	for(j=2;j<=1005;j++)
	{
		/*
		这道题没什么写的,第一次的代码输入不了数据,应该是死循环问题;
		仔细检查后发现,在这个循环每次变小了控制变量的值 ,加上 i=j
		就ok啦
		*/ 
		cnt=0;i=j;
		while(i!=1)
		{
			if(i&1)
			{
				i=3*i+1;
				i>>=1;
				cnt++;
			}
			else
			{
				i>>=1;
				cnt++;
			}
		}
				vis[j]=cnt;
	}
}  			
int main()
{
	int clock1,clock2;
	clock1=clock(); 
	fun();
    scanf("%d",&num);
	printf("%d\n",vis[num]);
	clock2=clock();
 	printf("%d\n",clock2-clock1);
  	system("pause");
   	return 0;    
}

 

posted @ 2012-07-23 12:38  加拿大小哥哥  阅读(168)  评论(0)    收藏  举报