题目翻译
给定一个 $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++]));
}