解题思路:从m到n一个一个遍历然后进行比较大小,最后输出最大值.
注意事项:在for循环哪里要创建一个中间变量j来保存i的值,再进行遍历。不能直接用i,最后会i一直为1进入一个死循环。
参考代码:
#include <iostream>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n)//循环输入
{
int max=0;//中间比较数
cout<<m<<" "<<n<<" ";
if(m>n)//判断m,n的大小,使得m<n。
{
int t=m;
m=n;
n=t;
}
for(int j=m; j<=n; j++)//从m到n一个一个遍历
{
int sum=1;//记录每次遍历的次数
int i=j;
while(i!=1)//判断停止条件
{
if(i%2==0)
{
i=i/2;
sum++;//次数++
}
else
{
i=i*3+1;
sum++;//次数++
}
}
if(sum>max)//每次的次数与前面的最大作比较
max=sum;
}
cout<<max<<endl;//输出最大的次数
}
return 0;
}
0.0分
5 人评分
用了long long 直接输出i j 都不行 #include<iostream> using namespace std; int fun(long long int k) { if(k%2!=0) k=k*3+1; else k=k/2; return k; } int fun2(long long int k) { long long int sum=1; while(k!=1) { k=fun(k); sum++; } return sum; } int main() { long long int i,j; long long int p,max=0,max2=0; while(cin>>i>>j) { cout<<i<<" "<<j<<" "; if(i>j) { i=p; i=j; j=p; } while(i<=j) { if(max2<max) max2=max; max=fun2(i); i++; } cout<<max2<<endl; max=max2=0; } }
决明子 2021-03-11 21:25:06 |
解决了
求大佬解答,这个样例都能通过,有什么特殊情况吗? #include<iostream> using namespace std; int fun(int k) { if(k%2!=0) k=k*3+1; else k=k/2; return k; } int fun2(int k) { int sum=1; while(k!=1) { k=fun(k); sum++; } return sum; } int main() { int i,j,p,max2=0,max=0; while(cin>>i>>j) { p=i; while(i<=j) { if(max2<max) max2=max; max=fun2(i); i++; } cout<<p<<" "<<j<<" "<<max2<<endl; max=max2=0; } }
cugnanan 2021-08-20 23:19:51 |
虽然我也不知道为什么,但是我跟你差不多,需要把倒数第二行的cout<<p<<" "<<j<<" "<<max2<<endl;拆开为cout<<p<<" "<<j<<" ";和cout<<max2<<endl;前者放在while下一行,后者在原位置,希望你解决后告诉我是为什么
ikun 2022-10-02 14:17:32 |
输入案例里i可能大于j,需要自己判断一下,然后最后输出的顺序还是按照输入的i,j顺序
C语言程序设计教程(第三版)课后习题8.1 (Java代码)浏览:828 |
妹子杀手的故事 (C语言代码)浏览:737 |
2005年春浙江省计算机等级考试二级C 编程题(3) (C语言代码)浏览:417 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:909 |
【简单计算】 (C语言代码)浏览:642 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:727 |
数字游戏 (C++代码)浏览:1240 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:726 |
妹子杀手的故事 (C语言代码)浏览:1153 |