心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
题目大意:将一个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 阅读(441) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:数学/数论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理