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

Posted 霜雪千年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解报告:hdu 1032 The 3n + 1 problem相关的知识,希望对你有一定的参考价值。

题目链接: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的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1032 The 3n + 1 problem

HDU 1032 [The 3n + 1 problem] 暴力模拟

(HDU/UVA)1032/100--The 3n + 1 problem(3n+1问题)

hdu 1032 The 3n + 1 problem

HDU 1032.The 3n + 1 problem注意细节预计数据不强8月21

[问题]HDOJ1032 The 3n + 1 problem