您的位置:首页 > 其它

【有奖】NOIP普及组模拟赛题解(T1角谷猜想)

2016-10-17 21:13 295 查看
这题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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: