10.6 负进制 2047

题目

学习信息学的人都熟悉二进制,但又没有人想过负二进制!那样的数字就不需要符号了!
二进制从低位到高位,即从右向左的位权是1,2,4,8,16……
负二进制的从右向左的位权当然就是1,-2,4,-8,16……
负二进制是可以表示任何整数的。如:
1,11.,111,100,101,11010,11011,11000,11001……
表示1,2,3,4,5,6,7,8,9……
而11,10,1101,1100,1111……
则表示-1,-2,-3,-4,-5……
现在给你一个十进制的整数n,请求出它的负二进制数。
输入样例:
-13
输出样例:
110111
样例解释:

从右向左:1*1+1*(-2)+1*4+0*(-8)+1*16+1*(-32)=-13

数据范围:
-2,000,000,000<=n<=2,000,000,000

题解

模拟,另一方法见
洛谷1017进制转换题解

代码

var
  n,i,k:longint;
  s:string;
  a:array[1..10000]of longint;
begin
  readln(n);
  repeat
      inc(k);
      a[k]:=abs(n mod 2);
      n:=-trunc((n-a[k])/2);
  until n=0;
  for i:=k downto 1 do
    write(a[i]);
  writeln;
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值