ABC105C | AT4239

· · 题解

题目翻译

给定一个 10 进制数,将其转变成 -2 进制。

题目思路

和二进制一样短除法。

注意事项:

题目代码

void solve()//没加上快读快写、long long定义ll,防抄袭
{
    int a[105];//存储答案
    ll n=read();
    int x=-1;//存储答案位数
    if(n==0){puts("0");return;}//特判
    while(n!=0)//短除法
    {
        a[++x]=n%(-2);
        n/=(-2);
        if(a[x]==(-1))//注意事项栏
        {
            n++;
            a[x]=1; 
        }
    }
    reverse(a,a+x+1);//倒着输出,翻转区间
    for(int i=0;i<=x;write(a[i++]));
}