解题思路:
注意事项:
参考代码:
#include <cstdio> #include <vector> #include <algorithm> #include <cstring> #include <cmath> #include <string> #include <map> #include <queue> #include <set> using namespace std; #ifdef WIN typedef __int64 LL; #define iform "%I64d" #define oform "%I64d\n" #else typedef long long LL; #define iform "%lld" #define oform "%lld\n" #endif #define SI(a) scanf("%d", &(a)) #define SDI(a, b) scanf("%d%d", &(a), &(b)) #define S64I(a) scanf(iform, &(a)) #define SS(a) scanf("%s", (a)) #define SDS(a, b) scanf("%s%s", (a), (b)) #define SC(a) scanf("%c", &(a)) #define PI(a) printf("%d\n", (a)) #define PS(a) puts(a) #define P64I(a) printf(oform, (a)) #define Max(a, b) ((a) > (b) ? (a) : (b)) #define Min(a, b) ((a) < (b) ? (a) : (b)) #define MSET(a, b) (memset((a), (b), sizeof(a))) #define Mid(L, R) ((L) + ((R) - (L))/2) #define Abs(a) ((a) >= 0 ? (a) : -(a)) #define REP(i, n) for(int (i)=0; (i) < (n); (i)++) #define FOR(i, a, n) for(int (i)=(a); (i) <= (n); (i)++) const int INF = 0x3f3f3f3f; const double eps = 10e-9; int ans[100]; int cnt; int main() { int x; SI(x); cnt = 0; while(x) { if(x % -2 == -1) { //余数为负数只能为-1 +2变成正数 ans[cnt++] = 1; x = x / -2 + 1; } else { ans[cnt++] = x % -2; x /= -2; } } if(cnt) { for(int i=cnt-1; i>=0; i--) { printf("%d", ans[i]); } putchar('\n'); } else { puts("0"); } return 0; }
0.0分
0 人评分
震宇大神的杀毒软件 (C++代码)浏览:1173 |
剔除相关数 (C语言代码)浏览:1058 |
WU-字符串比较 (C++代码)浏览:824 |
简单的a+b (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1100 |
【偶数求和】 (C语言代码)浏览:460 |
Tom数 (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:596 |
计算质因子 (Java代码)浏览:789 |