1. 程式人生 > >百練2736/noi 11:大整數減法

百練2736/noi 11:大整數減法

2736:大整數減法

總時間限制: 
1000ms 
記憶體限制: 
65536kB
描述

求兩個大的正整數相減的差。

輸入
共2行,第1行是被減數a,第2行是減數b(a > b)。每個大整數不超過200位,不會有多餘的前導零。
輸出
一行,即所求的差。
樣例輸入
9999999999999999999999999999999999999
9999999999999
樣例輸出
9999999999999999999999990000000000000
  • 檢視 
  • 提交 
  • 統計 
  • 提示 
  • 提問
    • 程式碼:
    #include<cstdio>
    #include<cstring>
    char s1[202],s2[202];
    int ans[202];
    char * strRev(char * s){
    	char * p,*q,ch;
    	p=q=s;
    	while(*q!='\0')q++;
    	q--;
    	while(p<q){
    		ch = *p;
    		*p++ = *q;
    		*q-- = ch;
    	}
    	return s;
    }
    int main(){
    	scanf("%s",s1);
    	scanf("%s",s2);
    	strRev(s1);strRev(s2);
    	int len1=strlen(s1),len2=strlen(s2);
    	for(int i =0;i<len2;i++){
    		ans[i]= s1[i] - s2[i];
    	}
    	for(int i =len2;i<len1;i++)
    		ans[i]=s1[i]-'0';
    	for(int i = 0;i<len1-1;i++){
    		if(ans[i]<0){
    			ans[i]+=10;
    			ans[i+1]--;
    		}
    	}
    	int tmp =len1-1;
    	while(ans[tmp]==0)tmp--;
    	for(int i=tmp;i>=0;i--)printf("%d",ans[i]);
    	putchar('\n');
    	return 0;
    }