The Moronic Cowmpouter
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 4006   Accepted: 2079

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

Source

USACO 2006 February Bronze



思路:

转化成为-2进制,原理同2进制相同。

举例模拟一个,整数10的情况

10/-2=-5......0

-5/-2=3......1

3/-2=-1......1

-1/-2=1......1

1/-2=0......1

0结束

最后的结果就是11110。

整除的情况就是0,如果不能整除,需要进行处理,-1之后再去-2得到商,余数为1。

因为-2进制最后保存只会存在0或者1,不能有其他情况。举例来说:

3/-2商为-1时,余数为1。商为-2时,结果为-1。



0的时候做特殊处理。



代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int num;
scanf("%d",&num);
string s="";
if(num==0)
{
cout<<"0"<<endl;
return 0;
}
while(num!=0)
{
int temp=fabs(num);
if(temp%2)
{
s+="1";
num=(num-1)/(-2);
}
else
{
s+="0";
num=num/(-2);
}
}
reverse(s.begin(),s.end());
cout<<s<<endl;
return 0;
}

POJ3191-The Moronic Cowmpouter的更多相关文章

  1. A - The Moronic Cowmpouter

    Description Inexperienced in the digital arts, the cows tried to build a calculating engine (yes, it ...

  2. POJ 3191 The Moronic Cowmpouter(进制转换)

    题目链接 题意 : 将一个10进制整数转化为-2进制的数. 思路 :如果你将-2进制下的123转化为十进制是1*(-2)^2+2*(-2)^1+3*(-2)^0.所以十进制转化为-2进制就是一个逆过程 ...

  3. The Moronic Cowmpouter(负进位制转换)

    http://poj.org/problem?id=3191 题意:将一个整型的十进制整数转化为-2进制整数. #include <stdio.h> #include <algori ...

  4. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  5. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

  6. poj3191(负进位制)

    题目链接:https://vjudge.net/problem/POJ-3191 题意:将一个int范围的整数用-2进制表示并输出. 思路:将十进制转换成-2进制,原理也类似于短除法.但不同的是不是简 ...

  7. poj3191(进制转换)

    题目链接:http://poj.org/problem?id=3191 题意:将一个数转换为-2为基数的数 思路:套路,看代码就好了 代码: #include <iostream> usi ...

  8. POJ3191【(-2)进制本质】

    题意: 实现10进制数转换成-2进制数 思路: 有点意思,先扯些题外话,一个我们经常做的二进制:利用二进制有好多优化,大多都是利用了二进制能够表示一个数,然后优化了空间或者时间. 所以问题很清楚啊,就 ...

随机推荐

  1. MongoDB理解

    1. 什么是MongoDB (1)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. (2)MongoDB 是一个 ...

  2. LeetCode Questions List (LeetCode 问题列表)- Java Solutions

    因为在开始写这个博客之前,已经刷了100题了,所以现在还是有很多题目没有加进来,为了方便查找哪些没加进来,先列一个表可以比较清楚的查看,也方便给大家查找.如果有哪些题目的链接有错误,请大家留言和谅解, ...

  3. LeetCode 163. Missing Ranges (缺失的区间)$

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  4. 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  5. my dream

    我的梦想(践踏一切可以践踏的,放弃一切必须放弃的,然后朝着自己认为的方向努力,只要自己认为对了就可以了(但是最好能考虑方面全一点,这就叫尽力了)我想要的生活怎么那么醉我想要的食物怎么那么碎我最爱的女孩 ...

  6. JS框架设计读书笔记之-小知识

    这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识 ...

  7. 笔记-java泛型详解

    首先,先说明一下,java泛型文章的出处:http://www.cnblogs.com/lzq198754/p/5780426.html 作为学习笔记保存. 1.为什么需要泛型 泛型在Java中有很重 ...

  8. 轻松学会ES6新特性之生成器

    生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ...

  9. R语言高性能编程,优化(一)

    这段时间学习了<R高性能编程>这本书,基于这段时间做的项目实践,总结了一些自己的体会,和大家分享 一.为什么R程序有时候会很慢?1.计算性能的三个限制条件 cpu ram io R代码本身 ...

  10. where id in用 order by field 保持排序

    转载自http://blog.linuxphp.org/archives/1588/ 先看下mysql的默认排序 select id from article where id in(63261,63 ...