该题为2013ICPC亚洲区预选赛长春站B题
http://acm.hdu.edu.cn/showproblem.PHP?pid=4814
题意很简单:给定一个十进制数,要求输出在(1+sqrt(5))/2进制中的数的表示。
队友写的
int main()
{
int n;
while(cin>>n)
{
if(n==1)
{
cout<<"1"<<endl;
continue;
}
else
{
int num[130];
memset(num,0,sizeof(num));
int flag=1;
num[65]=n;
while(flag)
{
flag=0;
for(int i=0;i<130;i++)
{
if(num[i]>=2)
{
flag=1;
int x=num[i];
num[i+1]+=x/2;
num[i]=x%2;
num[i-2]+=x/2;
}
}
for(int i=0;i<129;i++)
{
if(num[i]>0&&num[i+1]>0)
{
flag=1;
int x=min(num[i],num[i+1]);
num[i+2]+=x;
num[i+1]-=x;
num[i]-=x;
}
}
}
int z,x;
for(int i=0;i<130&&num[i]==0;i++) x=i;
for(int i=129;i>=0&&num[i]==0;i--) z=i;
for(int i=z-1;i>x;i--)
{
cout<<num[i];
if(i==65) cout<<'.';
}
cout<<endl;
}
}
return 0;
}