题意:把一个十进制数转换成-2进制数,并且(-2)进制数的值只有01两种情况

思路:因为只有01两种情况,本来应该有-1 1 0 三种的,所以必须把-1换成1,怎么换就得推了

举个例子,第0次:100/2==50,100%2==0,把50++=51,逆回去就是102,相当于增加了2即2^1

第1次:50/2==25 ,50%2==0 ,把25++=26,逆回去就是104,相当于增加了4即2^2

所以第i次迭代后,商+1相当于原来的数增加了2^(i+1),这个非常有用,题目中:

n=b0+b1(-2)+b2(-2)^2+b3(-2)^3+..........

当n为正数时,第i次迭代的余数为-1时,那么i一定是奇数(n为正数时,余数之和n的符号有关,是交替变化的)

那么结果为(-1)*(-2)^i=2^i

若为1则1*(-2)^i=-2*i  相差2*2^i=2^(i+1)!!!

代码:

#include <iostream>
#include <stdio.h>
#include <cmath>
#include <cstring>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
const int M=10010;
int n;
int a[110];
void solve(int g)
{memset(a,0,sizeof(a));int i=0;while(n!=0){a[i]=n%(-2);n/=(-2);if(a[i]==-1){a[i]=1;n++;}i++;}int j=i;while(j && a[j]==0)j--;printf("Case #%d: ",g);for(; j>=0; j--){printf("%d",a[j]);}printf("\n");
}
int main()
{int t,g=0;scanf("%d",&t);while(t--){g++;scanf("%d",&n);solve(g);}return 0;
}

Uva 11121 Base -2相关推荐

  1. UVa 11121 - Base -2 负进制的转化和推广

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. UVa 11121 - Base -2

    题目:计算以-2为基数的数的表示. 分析:数论.写出不同位数能表示的数字区间就可以找到规律. 长度为1:[1,1]: 长度为2:[-2,-1]: 长度为3:[2,5]: 观察发现,区间长度增长为1,2 ...

  3. UVa 11121 Base -2(负数进制)

    题意: 给定一个大于等于0的整数n,求n的-2进制数. 思路: 1. 对于2进制的,大家都是熟悉的: a[i] = n % 2; n = n/2; 2. 是否发现上面少了一个地方呢?n = n/2是否 ...

  4. UVA - 11121 Base -2

    题目大意:给出一个十进制的数,将这个数转换成-2进制的数. 解题思路:进制转化是一种很简单的题型,可是对于负数的进制来说我就很陌生了,研究了蛮久的,这里分享一下. 首先要了解如何将一个-2进制的数转换 ...

  5. uvaoj 11121 Base -2 整数转成负数进制

    uvaoj 11121 Base -2 整数转成负数进制 给定一个十进制的数,将其转成-2进制的数.也就是n=b0+b1*(-2)+b2*(-2)^2+b3*(-2)^3....其中bi为0或1. 算 ...

  6. uva 11121【base -2】

    uva上面的题目就是不一样啊... 表扬一下"经典"... 代码如下: 1 #include <cstdio> 2 #include <cstring> 3 ...

  7. 11121 - Base -2

    描述:除-2取余,余数为负的时,余数要减去-2,商要加一 #include <cstdio> #include <cmath> int main() {//freopen(&q ...

  8. 11121 Base -2

    题目大意:输入一个十进制数,将该数转化为-2进制 首先用例子确定一下思路 输入7 7 / -2 = <-3.5>  -3余1 -3/ -2 = <1.5>    2余1 2 / ...

  9. uva 11121(-2进制)

    报告参考:http://www.cnblogs.com/scau20110726/archive/2012/12/21/2828420.html 代码如下: 1 /****************** ...

最新文章

  1. linux下几种运行后台任务的方法
  2. eclipse 查找
  3. leetCode 28. Implement strStr() 字符串
  4. java 面试指南_Java面试参考指南–第1部分
  5. httpHandlers和httpModules接口介绍 (5)
  6. WebBrowser,挖坑,跳坑,填坑
  7. 如何破解几乎所有的求职面试
  8. mac obs 录屏黑屏_差点被录屏软件搞死.......
  9. PDF文件限制密码如何解除
  10. Matlab中grid 的使用
  11. ubuntu报错:RuntimeError : unexcepted EOF, excepted 2599001 more bytes. The file might be corrupted.
  12. 如何使用 IFTTT 零成本建立网站内容监控系统?
  13. 鲁豫有约--之分享李连杰的私密生活
  14. nu.xom:Element
  15. python中元组常识,以及for 与 range 的用法!
  16. JWT 生成Token、解析Token的简单工具类
  17. DialogBox使用例子
  18. 【IoT】产品设计:硬件产品外观样品设计工艺及要求(手板)
  19. 网络传输协议原理透析
  20. 三相永磁同步电机Foc有感的程序控制(总结:程序2)

热门文章

  1. Github 首页制作
  2. 老友逢共话区块链落地,杭州首个区块链周首日精彩瞬间
  3. python字符串去掉空行_Python从字符串中删除空格
  4. MIT6.830-lab5-B+ Tree Index(数据库的索引B+树的搜索、插入、删除窃取、删除合并)
  5. 工资要达到多少,才能向银行贷款20万?
  6. 实现酒店计算机管理的模型,酒店管理系统设计.doc
  7. java 获取当前时间的毫秒数
  8. 通信协议整理之 IIC 通信
  9. zynq配置成jtag模式_Zynq-7000 MiZ701 SOC硬件使用手册
  10. JBoss Marshalling编解码