链接
https://blog.csdn.net/xuxiayang/article/details/80171086#ssl-1150
大意
输入一个数 n n <script type="math/tex" id="MathJax-Element-1">n</script>,输出按照角谷猜想运行回到1的次数
思路1
暴力模拟
代码1
#include<cstdio>
using namespace std;long long n;int ans;
int main()
{
scanf("%lld",&n);
for(;n!=1;ans++)
if(n&1) n=(n<<1)+n+1;else n>>=1;//直接暴力,简单粗暴
printf("%d",ans);
}
思路2
二进制特判
代码2
#include<cstdio>
#include<cmath>
using namespace std;long long n;int ans;
int main()
{
scanf("%lld",&n);
for(;n!=1;ans++)
if(n&1) n=(n<<1)+n+1;
else
{
if(n&(n-1)==0) {printf("%d",ans+log(n)/log(2));return 0;}//简单没难度
n>>=1;
}
printf("%d",ans);
}