#include <stdio.h> #include <stdlib.h> #include<string.h> int divide(char* str, int x, int size, int* pos); int main() { char* str = (char*)malloc(32); int stack[128]; while (scanf("%s", str) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to int top = -1,temp = 0; int *pos = &temp; while (*pos != strlen(str)) { int last = str[strlen(str) - 1] - '0'; stack[++top] = last % 2; divide(str, 2, strlen(str), pos); } while (top != -1) { printf("%d", stack[top--]); } printf("\n"); } return 0; } int divide(char* str, int x, int size, int* pos) { int remainder = 0; for (int i = *pos; i < size; i++) { int current = remainder * 10 + str[i] - '0'; str[i] = current / x + '0'; remainder = current % x; } while (str[*pos] == '0') { (*pos)++; } return *pos; }