描述
求两个大的正整数相减的差。
输入共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。输出一行,即所求的差。样例输入
9999999999999999999999999999999999999 9999999999999
样例输出
9999999999999999999999990000000000000
1 #include <stdio.h> 2 #include<string.h> 3 int a[201]={0}, b[201]={0}; 4 int i, ka, kb, k,c,temp,len; 5 char s[201]; 6 void minus() 7 { 8 for(i = 0; i < ka; i++) 9 { 10 if(a[i] <b[i]) 11 { 12 c=1; 13 a[i+1]--; 14 } 15 else 16 c=0; 17 a[i] = a[i]+c*10 - b[i]; 18 k=ka; 19 while(a[k-1]==0 && k>0) 20 k--; 21 } 22 } 23 int main() 24 { 25 scanf("%s",s); 26 k=0;len=strlen(s); 27 while(k<len) 28 { 29 a[k]=s[k]-‘0‘; 30 k++; 31 } 32 ka=k; 33 scanf("%s",s); 34 k=0;len=strlen(s); 35 while(k<len) 36 { 37 b[k]=s[k]-‘0‘; 38 k++; 39 } 40 kb=k; 41 if(ka >= kb) k = ka; 42 else 43 k = kb; 44 for(i = 0; i < ka/2; i++) 45 { 46 temp=a[i]; 47 a[i]=a[ka-i-1]; 48 a[ka-1-i] =temp; 49 } 50 for(i = 0; i < kb/2; i++) 51 { 52 temp=b[i]; 53 b[i]=b[kb-i-1]; 54 b[kb-1-i] =temp; 55 } 56 c=0; 57 minus(); 58 for(i = k-1; i >= 0; i--) 59 printf("%d",a[i]); 60 return 0; 61 }
时间: 2024-11-10 18:06:46