版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuli_dear_wang/article/details/88171280
一道水题,也是一道坑题。在这里记录下一个坑。
- 本来很简单,但是没考虑到i和j的大小不确定,所以得先判断大小,然后进行遍历。其实题上给的输入例子,都是 i<j,但是仔细看题上说明并没有说i和j谁大谁小。所以这里还是需要进行判断的
两个小技巧:
- 判断奇偶数的简单方法:n & 1 结果为 1 说明是奇数;否则为偶数
- 数遍历次数的话。要从0开始,别犯错误想当然从1开始。。
#include <iostream>
#include <sstream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;
//const int maxn = 100000 + 10;
int panduan(int n)
{
int i;
for (i = 0; n != 1; i++){ //注意:如果看循环多少次,都是从0开始算完一遍之后开始计
if (n & 1) // 判断为奇数
n = 3 * n + 1;
else // 判断为偶数
n = n / 2;
}
return i+1;
}
int main(){
int i,j;
while (cin>>i>>j)
{
int m = min(i, j);
int n = max(i, j);
int num = 0;
for (int a = m; a <= n; a++)
{
num=max(num, panduan(a)); // 注意最大值最小值函数如何使用
}
cout << i << " " << j << " " << num << endl;
}
return 0;
}