进制转换
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。
例如,因为 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第一次训练用题
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 }
// 逗号表达式
返回最后一个东西的值
等价于while (i)
但是在此之前做了个Putchar
do{
putchar(s[--i]);
}while(i>0)
putchar(s[--i]);
}while(i>0)