1-6-11:大整数减法

Posted 木樨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1-6-11:大整数减法相关的知识,希望对你有一定的参考价值。

描述

求两个大的正整数相减的差。

输入共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 }

 

以上是关于1-6-11:大整数减法的主要内容,如果未能解决你的问题,请参考以下文章

Code Kata:大整数比较大小&大整数四则运算---加减法 javascript实现

2736 大整数减法

OJ 大整数减法

1169:大整数减法

Ac日记——大整数减法 openjudge 1.6 11

大整数减法