解题思路:
注意事项:
参考代码:
#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语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:441 |
点我有惊喜!你懂得!浏览:1326 |
简单的a+b (C语言代码)浏览:704 |
C语言训练-大、小写问题 (C语言代码)浏览:2351 |
ASCII帮了大忙浏览:748 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:501 |
【偶数求和】 (C语言代码)浏览:640 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:606 |
母牛的故事 (C语言代码)浏览:940 |
剪刀石头布 (C++代码)浏览:1706 |