题目大意:将一个10进制数n转化为-2进制数。
转化成-2进制的过程和转化成2进制类似,唯一不一样的是:如果余数为0,余数-=-2,商++。
另外n==0的情况要注意。
具体请看我的代码:
#include<stdio.h>
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
long test;
scanf("%ld",&test);
for(long k=1;k<=test;k++)
{
const long maxn=20007,base=-2;
long n,a[maxn],top;
scanf("%ld",&n);
top=0;
while(n!=0)
{
long r=n%base;
n/=base;
if(r<0)
{
r-=base;
n++;
}
top++;a[top]=r;
}
printf("Case #%ld: ",k);
if(top==0)
{
printf("%ld\n",0);
continue;
}
while(top>0)
{
printf("%ld",a[top]);top--;
}
putchar('\n');
}
return 0;
}
posted on 2010-02-07 16:16
lee1r 阅读(443)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:数学/数论