读书人

hdu 1032 The 3n + 一 problem

发布时间: 2012-09-20 09:36:50 作者: rapoo

hdu 1032 The 3n + 1 problem

看题目请点这里

题意:

给你2个整数min和max(若min>max要交换2个的值否则会wa),让你求出在[min,max]里的所整数的最大操作次数。

操作规则如下(data为[min,max]里的一个整数):

如果data为奇数且不等于1:data=3*data+1,否则data=data/2,当data=1时本轮操作结束。

记下min到max这些数里的最大操作次数。

代码:

#include<stdio.h>int main(){    int min,max,ans,data,num,i;    while(scanf("%d%d",&min,&max)!=EOF)    {        printf("%d %d",min,max);        if(min>max)        {            max^=min^=max^=min;   //交换min、max的值        }        for(ans=1,i=min;i<=max;i++)        {            num=1;            data=i;            while(data!=1)            {                data=((data&1)==0?data>>1:3*data+1);                num++;   //记下data变为1要多少次操作            }if(num>ans){ans=num;   //记下min到max这些数的里最大操作次数}        }        printf(" %d\n",ans);    }    return 0;}


读书人网 >编程

热点推荐