解题思路:
为了采用规范化编程,建议把那个3n+1猜想写进一个函数,返回值是每个传入的数的循环长度。这个题思路也很简单,就是输入对于每次输入的i,j,先输出i,j,然后判断一下i和j的大小,始终让i保存最小的数,然后就写一个循环从i到j,弄一个maxlen初始化为0,循环时只要每个数最大循环长度大于maxlen,那就替换保存。
注意事项:
1、i,j的大小一定要判断,有可能i比j大,如果不判断,循环可能不执行
2、一定要先输出i,j,然后再做处理,这样才能保证i,j的输出和输入时一样,别等到最后输出i,j还有maxlen,因为途中i,j可能要改变顺序。
参考代码:
#include <iostream>
using namespace std;
int conject(int num)
{
int len = 0;
while (num!=1)
{
if (num%2==0)
num /= 2;
else
num = num * 3 + 1;
len++;
}
return len+1;
}
int main()
{
int i, j;
while (cin>>i>>j)
{
cout << i << " " << j << " ";
if (i>j)
{
swap(i,j);
}
int maxlen = 0;
for (int k=i; k<=j; k++)
{
if (conject(k)>maxlen)
maxlen = conject(k);
}
cout << maxlen <<endl;
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:516 |
最小公倍数 (C语言代码)浏览:863 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:375 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:758 |
母牛的故事 (C语言代码)浏览:551 |
蚂蚁感冒 (C语言代码)浏览:1333 |
用筛法求之N内的素数。 (C语言代码)浏览:530 |
生日日数 (C语言代码)浏览:1502 |
神奇的fans (C语言代码)浏览:987 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:577 |