View Code of Problem 3689

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main(){
 	int t;
 	int zero;
 	char a[110],b[110];
 	char c[110];
 	char temp[110];
 	int numa,numb;
 	int count=0;
 	int start;
	scanf("%d",&t);
	int flag;
	while(t--){
		count++;
		flag=0;
		zero=0;
		scanf(" %s %s",&a,&b);
		int lena=strlen(a);
		int lenb=strlen(b);
		int max=lena>=lenb?lena:lenb;
		int min=lena>=lenb?lenb:lena;
		for(int i=0;i<max;i++){
			c[i]='0';
		}
		if(lena==lenb){
			for(int i=0;i<lena;i++){
				numa=a[i]-'0';
				numb=b[i]-'0';
				if(numb>numa){
				flag=1;
				strcpy(temp,a);
				strcpy(a,b);
				strcpy(b,temp);
				break;
				}
			}
		}else if(lena<lenb){
			flag=1;
			int len=lena;
			lena=lenb;
			lenb=lena;
			strcpy(temp,a);
			strcpy(a,b);
			strcpy(b,temp);
		}
			int lenc=max;
			int cha=max-min;
			c[lenc]='\0';
			lenc--;
			for(int i=min-1;i>=0;i--){
				numa=a[i+cha]-'0';
				numb=b[i]-'0';
				if(numa>=numb){
					c[lenc]=numa-numb+'0';
				}else{
					int t=i+cha;
					while(!(a[t-1]>='1'&&a[t-1]<='9')){
						a[t-1]='9';
						t--;
					}
					a[t-1]-=1;
					c[lenc]=numa+10-numb+'0';
				}
				lenc--;
			}
			for(int i=cha-1;i>=0;i--){
				c[lenc]=a[i];
				lenc--;
			}
			printf("Case #%d:\n",count);
			if(flag==1)
			printf("-");
			//printf("max%d\n",max);
			for(int i=0;i<max;i++){
				if(c[i]>='1'&&c[i]<='9'){
					start=i;
					zero=1;
					break;
				}
			}
			if(zero==1)
			for(int i=start;i<lena;i++){
				printf("%c",c[i]);
			}else{
				printf("0");
			}
			printf("\n");
		
	
	}
}

				

Double click to view unformatted code.


Back to problem 3689