#include<stdio.h> #include<string.h> struct bigint { int d[1000]; int len; }; bigint change(char a[]) { bigint c; c.len = 0; for (int i = 0; i < 1000; i++) { c.d[i] = 0; } for (int i = 0; i < strlen(a); i++) { c.d[c.len++] = a[strlen(a) - i - 1]; } return c; } bigint sub(bigint a, bigint b) { bigint c; c.len = 0; for (int i = 0; i < a.len || i < b.len; i++) { if (a.d[i] < b.d[i]) { a.d[i + 1]--; a.d[i] += 10; } c.d[c.len++] = a.d[i] - b.d[i]; } while (c.len - 1 >= 1 && c.d[c.len-1] == 0) { c.len--; } return c; } int main() { int t; scanf("%d", &t); for(int k=1;k<=t;k++){ char a[101], b[101],s[100]; scanf("%s", a); scanf("%s", b); printf("Case #%d:\n", k); if (strcmp(a, b) < 0) { strcpy(s, a); strcpy(a, b); strcpy(b, s); printf("-"); } bigint x, y; x = change(a); y = change(b); bigint c = sub(x, y); for (int i = c.len - 1; i >= 0; i--) { printf("%d", c.d[i]); } printf("\n"); } } |
Double click to view unformatted code.