码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-02-25 11:10:16      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:namespace   clu   mes   php   else   class   题解   main   bit   

题目链接: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

标签:namespace   clu   mes   php   else   class   题解   main   bit   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!