http://poj.org/problem?id=3191
题意:将一个整型的十进制整数转化为-2进制整数。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string.h> 5 #define LL long long 6 using namespace std; 7 int main() 8 { 9 LL n,s[1010]; 10 while(~scanf("%lld",&n)) 11 { 12 memset(s,0,sizeof(s)); 13 if (n==0) 14 { 15 puts("0"); 16 continue; 17 } 18 int flag = 0,i = 0; 19 while(n) 20 { 21 s[i] = n%2; 22 //printf("%lld ",s[i]); 23 if (n < 0) 24 s[i] = -s[i]; 25 n-=s[i]; 26 n/=-2; 27 i++; 28 } 29 flag = i; 30 reverse(s,s+i); 31 for (i = 0; i < flag; i++) 32 { 33 printf("%lld",s[i]); 34 } 35 puts(""); 36 } 37 return 0; 38 }