POJ 3191 The Moronic Cowmpouter 负二进制转换

原创 2011年01月22日 21:20:00

http://poj.org/problem?id=3191

 

The Moronic Cowmpouter
Time Limit: 1000MS   Memory Limit: 65536K

Description

Inexperienced in the digital arts, the cows tried to build a calculating engine (yes, it's a cowmpouter) using binary numbers (base 2) but instead built one based on base negative 2! They were quite pleased since numbers expressed in base −2 do not have a sign bit. 

You know number bases have place values that start at 1 (base to the 0 power) and proceed right-to-left to base^1, base^2, and so on. In base −2, the place values are 1, −2, 4, −8, 16, −32, ... (reading from right to left). Thus, counting from 1 goes like this: 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001, and so on. 

Eerily, negative numbers are also represented with 1's and 0's but no sign. Consider counting from −1 downward: 11, 10, 1101, 1100, 1111, and so on. 

Please help the cows convert ordinary decimal integers (range -2,000,000,000..2,000,000,000) to their counterpart representation in base −2.

Input

Line 1: A single integer to be converted to base −2

Output

Line 1: A single integer with no leading zeroes that is the input integer converted to base −2. The value 0 is expressed as 0, with exactly one 0.

Sample Input

-13

Sample Output

110111

Hint

Explanation of the sample: 

Reading from right-to-left:
1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13
此题的解法基于以下几点:
(1) 如果一个数是奇数,那么它的二进制形式的最后一位肯定是1,我们可以去掉此 1,就是(x-1)/-2,进入(2)
(2) 如果一个数的最后一位为 0 ,我们可以把这个数右移(可以类比以 2 为基的二进制数的操作)一位,然后它的
二进制的倒数第二个数就成了最后一个,就是 x=x/-2,然后进入(1)迭代,直到变为 0

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

The Moronic Cowmpouter poj3191(负进制转换以及其他进制转换模板)

The Moronic Cowmpouter Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: ...
  • Gentle_Guan
  • Gentle_Guan
  • 2017年02月08日 11:38
  • 321

负数如何转换成二进制

步科触摸屏接线   KINCO伺服总结 负数如何转换成二进制   2010-07-09 09:32:11|  分类: 学术文章 |  标签: |举报 |字号大...
  • initial_belief
  • initial_belief
  • 2014年10月28日 21:54
  • 627

java中十进制转二进制转换函数

java中十进制转二进制转换函数  分类: Java 十进制转成十六进制:  Integer.toHexString(int i)  十进制转成八进制  Inte...
  • baidu_29835301
  • baidu_29835301
  • 2015年07月21日 10:23
  • 4320

题目1138:进制转换 (大数据10进制到2进制)

题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非...
  • xianyafu
  • xianyafu
  • 2016年05月05日 16:32
  • 595

进制转换练习题两道

题目均来自九度,北大的研究生机试题 题目1118:数制转换 题目描述:     求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。     不同进制的...
  • gaotong2055
  • gaotong2055
  • 2013年08月16日 22:34
  • 1359

二进制数转换成十进制数(栈来实现)

补充知识点:头文件:#include pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y);栈:先进后出   队列:先进先出mai...
  • qq_21792169
  • qq_21792169
  • 2016年10月19日 13:37
  • 924

POJ - 1742 Coins 多重背包+(二进制优化||单调队列优化)

传送门:POJ 1742 题意:有n中面额的钱,每种有ci个,问1--m里有多少个数能用这些钱组成。 思路:一看就知道是多重背包,不过是重量等于价值的特殊形态而已,并且数据量明显不能直接暴力,这里...
  • lxy767087094
  • lxy767087094
  • 2017年07月21日 13:29
  • 77

POJ 3259 Wormholes(SPFA算法判断是否存在负环)

Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36755   Accepted: 13457...
  • zwj1452267376
  • zwj1452267376
  • 2015年08月19日 21:03
  • 746

poj1014完全背包 hdu2191多重背包 经典二进制优化

多重背包或者完全背包转换成 01 背包问题就是多了个二进制优化 把它的件数C 用分解成若干个件数的集合 这里面数字可以组合成任意小于等于C 的件数,而且不会重复 之所以叫二进制分解,是因为这样分解可以...
  • Summer__show_
  • Summer__show_
  • 2016年05月25日 20:32
  • 621

负进制的转换

这是NOIP2000提高组第一题,题目描述是这样的: 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可...
  • yyyds
  • yyyds
  • 2016年07月30日 23:36
  • 463
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 3191 The Moronic Cowmpouter 负二进制转换
举报原因:
原因补充:

(最多只允许输入30个字)