角谷猜想的步数
目录
题目描述
输入格式
输出格式
样例
输入数据 1
输出数据 1
提示
代码
优化后
再次优化后
最后再次优化后
题目描述
输入格式
输入一个正整数 n
输出格式
输出 n 变成 1 的步数
样例
输入数据 1
3
Copy
输出数据 1
7
Copy
提示
1≤n≤100
样例解释: 3−>3∗3+1=10−>10/2=5−>3∗5+1=16−>16/2=8−>8/2=4−>4/2=2−>2/2=1
禁止抄袭
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
while(n!=1){
if(n%2==1){
n=n*3+1;
sum++;
}else{
if(n%2==0){
n=n/2;
sum++;
}
}
}
cout<<sum;
return 0;
}
优化后
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
while(n!=1){
if(n%2==1){
n=n*3+1;
sum++;
}else{
n=n/2;
sum++;
}
}
cout<<sum;
return 0;
}
再次优化后
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
while(n!=1){
if(n%2==1){
n=n*3+1;
}else{
n=n/2;
}
sum++;
}
cout<<sum;
return 0;
}
最后再次优化后
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
while(n!=1){
if(n%2==1)n=n*3+1;
else n=n/2;
sum++;
}
cout<<sum;
return 0;
}