Hdoj 1032 The 3n+1 problem (看题目很重要)

思路:找出i ,j之间所有数的循环数(包括i,j),把最大值输出(注意!i不一定大于j)(没看到这个被wa了。。。)

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */


int main(int argc, char *argv[]) {
    long i,j,len;
    long x;
    long t;
    long a[10000];
    long y;
    long max;
    long p;
    while(scanf("%ld%ld",&i,&j)!=EOF)
    {
    	printf("%ld %ld ",i,j);
    	len=0;
    	y=0;
    	max=0;
    	if(i>j)
    	{
    		int temp=i;
    		i=j;
    		j=temp;
		}
    	for(t=i;t<=j;t++)
    	{
		
    	x=t;
    	len=0;
    	for(x;x!=1;)
    	{
    		if(x%2!=0)
    		{
    			x=3*x+1;
			}
			else
				x=x/2;
			len++;
		}
		a[y]=len;
		y++;
		}
		max=a[0];
		for(p=1;p<y;p++)
		{
			if(a[p]>max)
				max=a[p];
		}
		printf("%ld\n",max+1);
	}

    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值