这题so easy!简单的高精即可AC!
#include <iostream>
#include <string> //字符串using namespace std;
string a1;
int a[1001],c[1001],s=0,x=0;
int pd()
{
if(a[1]!=1)return 0;
for(int i=2;i<=1000;i++)
if(a[i]!=0)return 0;
return 1;
} //判断这个高精数字是否为1,如果不为1则返回0,为1则返回1
int main()
{
cin>>a1;
for(int i=0;i<a1.size();i++)
a[a1.size()-i]=a1[i]-48; //高精中的字符串处理
while(1==1)
{
if(pd()==1)break;
if(a[1]%2==0)
{
for(int i=1000;i>=1;i--)
{
c[i]=(x*10+a[i])/2;
x=(x*10+a[i])%2;
}
for(int i=1;i<=1000;i++)
a[i]=c[i],c[i]=0;
x=0;
}//当这个数为偶数的时候,做除法处理
else if(a[1]%2==1)
{
for(int i=1;i<=1000;i++)
{
a[i]=a[i]*3+x;
if(a[i]>=10){x=a[i]/10;a[i]%=10;}
else x=0;
}
x=1;a[1]++;
while(a[x]==10)
{
a[x+1]++;
a[x]=0;
x++;
}
x=0;
}//否则做乘法处理
s++; //操作次数+1
}
cout<<s<<endl; //输出
return 0;
}