題目大意:將一個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 閱讀(449)
評論(0) 編輯 收藏 引用 所屬分類:
題目分類:數學/數論