花了两天时间终于苦逼的做出了3n+1problem

#include<stdio.h>
int main(){
int i,j,q,t,max,k,p,flag;
while(scanf("%d%d",&i,&j)==2){   //表示“==2”是百度的,不知啥意思,请指教//
max=0;
flag=1;
if(i>j) {q=i;i=j;j=q;flag=0;}  //当i>j时,i,j值交换//
for(k=i;k<=j;k++){
t=1;
p=k;
while(p!=1){
if(p%2!=0)
p=3*p+1;
else p/=2;
t++;     //累计周期长度//
}
if(max<t) max=t;    //求出i到j范围内某个数的最大周期长度 //
}
if(flag)   
printf("%d %d %d\n",i,j,max);
else printf("%d %d %d\n",j,i,max);
}
return 0;
}

 

真心没有c编程的天赋啊,难度排名中最简单的题3n+1花了两天时间什么百度有道什么runtime error 什么wrong answer什么Time limit exceeded各种各样的结果都出来了,经历了一番磨难才看到久违的AC。这样下去真心达不到老师的寒假作出50题编程题的要求啊T_T,好吧,不说了,晒代码!

原题链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=36

这道题的大致意思是给出两个数,求出这两个数之间(包括这两个数)的数的最大周期长度,所谓周期长度是指如果该数为奇数,则令它乘三加一,如果为偶数,则令它除以二,并以此循环,直到算到一停止,此时周期长度就是该数经过一系列奇偶运算得到的数的总个数。

 

posted @ 2013-02-03 00:13  sev_en  阅读(141)  评论(0编辑  收藏  举报