进制转换

P1022 进制转换
时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

太原成成中学第3次模拟赛 第2道

描述

对于十进制整数N,试求其-2进制表示。
例如,因为 1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13 ,所以(-13)_10 = (110111)_-2。

输入格式

一个整数,代表要转换的十进制数。

输出格式

一个整数,代表N的-2进制表示。

测试样例1

输入

-13

输出

110111

备注

|N| <= 2000000000
Vivian Snow
广东汕头聿怀初级中学NOIp第一次训练用题
 

 
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #define inf 1000000000
 6 using namespace std;
 7 int n,i=0;
 8 char s[100000];
 9 int main() 
10 {
11     scanf("%d", &n);
12     i = 0;
13     do {
14         if(n & 1) {
15             n--;
16             s[i] = '1';
17         }
18         else {
19             s[i] = '0';
20         }
21         i++;
22         n /= -2;
23     } while(n);
24     while(putchar(s[--i]), i);
25     return 0;
26 }
View Code

 

 // 逗号表达式
返回最后一个东西的值
等价于while (i)
但是在此之前做了个Putchar
do{
 putchar(s[--i]);
}while(i>0)
posted @ 2016-08-17 19:21  pandaB  阅读(250)  评论(0编辑  收藏  举报