解题思路:

按照题意模拟就行。题意大概是给两个数i,j,然后要求出[i, j]中满足:当前数是奇数,将当前数*3 + 1,当前数是偶数,将当前数/2最后等于1的最大操作数。

注意事项:

注意i,j大小,如果i > j,要将其互换

参考代码:

#include <iostream>

#include <cstdio>

#include <algorithm>

using namespace std;

int main() {

int l, r;

while (scanf("%d%d", &l, &r) != EOF) {

printf("%d %d ", l, r);

if (l > r) swap(l, r);

int mlen = 0, tlen = 0;

for (int i = l, temp = l; i <= r; i++, temp = i) {

tlen = 1;

while (temp != 1) {

if (temp % 2) temp = temp * 3 + 1;

else temp /= 2;

tlen++;

}

mlen = max(mlen, tlen);

}

printf("%d\n", mlen);

}

return 0;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

胡牛牛 1年前 回复TA
tlen为啥一开始是1