题目翻译

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

题目思路

和二进制一样短除法。

注意事项:

  • 特判数据 $n=0$ ,不特判的话,它本身进入不了短除法代码,答案就没有记录
  • 任何位置上不可能出现 $-1$,要转成 $1$ 输出。
  • 短除法倒着输出。

题目代码

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++]));
}
最后修改:2023 年 04 月 20 日
v我50吃疯狂星期四