首页 > 其他 > 详细

题解报告:hdu 1032 The 3n + 1 problem

时间:2018-02-25 10:21:04      阅读:227      评论:0      收藏:0      [点我收藏+]

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1032

解题思路:这道题的意思就是输入一个区间i,j找出这里面的最长周期;周期是这样子:当这个数(不为1)是奇数时就变为3*n+1,为偶数时就变为n/2,并且用sum来计数周期,直到n为1就跳出。(水题!!!注意杭电oj出题的一些坑)

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int a,b,sum,t,maxn;
 6     bool f=false;//标记是否交换了
 7     while(cin>>a>>b){
 8         if(a>b){
 9             swap(a,b);//题目的陷井
10             f=true;
11         }
12         maxn=0;
13         for(int i=a;i<=b;i++){
14             sum=1,t=i;
15             while(t!=1){
16                 if(t%2)t=3*t+1;
17                 else t/=2;
18                 sum++;
19             }
20             maxn=max(sum,maxn);
21         }
22         if(f){
23             swap(a,b);//题目有说保持原来的数据输出,所以还得交换过来
24             f=false;//同时置f为false
25         }
26         cout<<a<< <<b<< <<maxn<<endl;
27     }
28     return 0;
29 }

 

题解报告:hdu 1032 The 3n + 1 problem

原文:https://www.cnblogs.com/acgoto/p/8468548.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!