中级光能
3944 数字漩涡
经验值:800 时间限制:1000毫秒
题目描述 Description
对一个正整数,不断进行如下操作:如果它是奇数,就对它乘3再加1,如果是偶数,就除以2。最终这个整数会变成1。就像是数字落入了漩涡,最终都会被卷入漩涡中心。
现给出一个正整数n(2<=n<=1000),编程求解n要经过几次变换会变成1。
输入描述 Input Description
一个正整数n。
输出描述 Output Description
一个正整数,表示变换次数。
样例输入 Sample Input
5
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
5是奇数,乘3加1得到16,16是偶数,除以2得到8,8是偶数……
变换过程:5—>16—>8—>4—>2—>1,变换次数为5次。
错误代码:
#include<iostream>
using namespace std;
int main(){
int n,cnt=0;
cin>>n;
while(1){
if(n==1){
break;
}
cnt++;
if(n%2==0){
n/=2;
}
if(n%2==1){
n*=3;
n--;
}
}
cout<<cnt;
return 0;
}
我真是个笨b,这个东西我竟在4月初做了5次
李玥仑在2021-06-30 23:46:55追加了内容
@酷町侠
这两题可以用一样的代码做
初级天翼
整形 a,cnt=0;
输入 a;
循环 (当a 不等于 1 时){
如果 (a%2 等于 0){
a 除以 2(/=2) ;
cnt 加一 ;
}
否则{
a 等于 a 乘 3 加 1;
cnt 加一 ;
}
}
输出 cnt;
望采纳~
缔造者
while(1){ if(n==1) break; if(n%2==1){ n*=3; n++; cp++; } else{ if(n%2==0) n/=2; cp++; } } cout<<cp;
核心
新手守护
int n,cnt=0;//一个正整数n,一个计数器
cin>>n;//输入
while(n!=1){ //当n不等于1
if(n%2==1){ //如果n是奇数
n=n*3+1;
}
else{ //如果n是偶数
n=n/2;
}
cnt++;//计数器不断+1
}
cout<<cnt;