View Code of Problem 3689

#include <stdio.h>
#include <string.h> 
struct bigInt{
	int d[1000];
	int len;
};
bigInt change(char str[]){
	bigInt bI;
	bI.len=strlen(str);
	for(int i=0;i<1000;i++){
		bI.d[i]=0;
	}
	for(int i=0;i<bI.len;i++){
		bI.d[i] = str[bI.len-i-1]-'0';
	}
	return bI;
}
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];
		c.len++;
	}
	while(c.len-1>=1&&c.d[c.len-1]==0)c.len--;
	return c;
}
int main(int argc, char *argv[])
{
	int t;
	scanf("%d",&t) ;
	for(int i=1;i<=t;i++){
		char stra[100];
		char strb[100];
		scanf("%s",stra);
		scanf("%s",strb);
		bigInt a = change(stra);
		bigInt b = change(strb);
		bigInt c;
		printf("Case #%d:\n",i);
		if(a.len>b.len||(a.len==b.len&&a.d[a.len-1]>b.d[b.len-1])){
			 c = sub(a,b);
			
		}else{
			 c = sub(b,a);
			printf("-");
		}
		
		for(int i=c.len-1;i>=0;i--){
			printf("%d",c.d[i]);
		}
		printf("\n");
		 
	}	
	return 0;
}

Double click to view unformatted code.


Back to problem 3689