2. A+B (I)
阿新 • • 發佈:2018-12-18
#include "stdio.h" #include "string.h" int main(int argc, char const *argv[]) { int n; scanf("%d",&n); getchar(); for(int i = 0; i < n; i++) { char a[100005] = {'\0'}, b[100005] = {'\0'}, c[100005] = {'\0'}; scanf("%s",a); scanf("%s",b); long la = strlen(a), lb = strlen(b), p = 0, jinwei = 0; do { if(a[la - p - 1] == '1' && b[lb - p - 1] == '1') { if(jinwei == 1) { c[100004 - p] = '1'; jinwei = 1; } else { c[100004 - p] = '0'; jinwei = 1; } } else if(a[la - p - 1] != b[lb - p - 1]) { if(jinwei == 0) { c[100004 - p] = '1'; jinwei = 0; } else { c[100004 - p] = '0'; jinwei = 1; } } else { if(jinwei == 0) { c[100004 - p] = '0'; jinwei = 0; } else { c[100004 - p] = '1'; jinwei = 0; } } p++; }while(la-p-1>=0 && lb-p-1>=0); if(la-p-1 < 0 && lb-p-1 >= 0) { do { if(b[lb - p - 1] == '0') { if(jinwei == 1) { c[100004 - p] = '1'; jinwei = 0; } else { c[100004 - p] = '0'; jinwei = 0; } } else if(b[lb - p - 1] == '1') { if(jinwei == 1) { c[100004 - p] = '0'; jinwei = 1; } else { c[100004 - p] = '1'; jinwei = 0; } } p++; }while(lb-p-1 >= 0); if(jinwei == 1) c[100004 - p] = '1'; } else if(lb-p-1 < 0 && la-p-1 >= 0) { do { if(a[la - p - 1] == '0') { if(jinwei == 1) { c[100004 - p] = '1'; jinwei = 0; } else { c[100004 - p] = '0'; jinwei = 0; } } else if(a[la - p - 1] == '1') { if(jinwei == 1) { c[100004 - p] = '0'; jinwei = 1; } else { c[100004 - p] = '1'; jinwei = 0; } } p++; }while(la-p-1 >= 0); if(jinwei == 1) c[100004 - p] = '1'; } else { if(jinwei == 1) { c[100004 - p] = '1'; } } long f = 0; //µÚÒ»ÅÅ for(long k = 0; k < 100005; k++) { if(c[k] != '\0') f++; } long t = f + 2;//1 for(long i = 0; i < t-la; i++) { putchar(' '); } puts(a); putchar('+');//2 for(long i = 0; i < t-lb-1; i++) { putchar(' '); } puts(b); for(long n = 0; n < t; n++) putchar('-');//3 putchar('\n'); for(long n = 0; n<2; n++) putchar(' '); for(long k = 0; k < 100005; k++) { if(c[k] != '\0') putchar(c[k]); } putchar('\n'); } return 0; }