View Code of Problem 3689

#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.


Back to problem 3689