您的位置:首页 > 其它

大数减法模板

2017-08-15 18:14 399 查看
计算 a - b

代码:

1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4
5 string sol;
6
7 bool get(string a, string b){
8     if(a.size() < b.size()) return true;
9     if(a.size() > b.size()) return false;
10     for(int i = 0; i < a.size(); i++){
11         if(a[i] < b[i]) return true;
12         else if(b[i] < a[i]) return false;
13     }
14     return false;
15 }
16
17 void solve(string a, string b){
18     int j = a.size() - 1;
19     bool flag = false;//借位
20     for(int i = b.size() - 1; i >= 0; i--,j--){
21         int x = a[j] - '0';
22         int y = b[i] - '0';
23         if(flag){
24             x -= 1;
25             if(x < 0) x += 10;
26             else flag = false;
27         }
28         if(x < y){
29             x += 10;
30             flag = true;
31         }
32         sol += (char)(x - y + '0');
33     }
34     if(flag) a[j] -= 1;
35     while(j >= 0){
36         sol += a[j--];
37     }
38 }
39
40 int main(void){
41     string a, b;
42     cin >> a >> b;
43     bool flag = get(a, b);
44     if(flag) solve(b, a);
45     else solve(a, b);
46     reverse(sol.begin(), sol.end());
47     if(flag) cout << "-";
48     cout << sol << endl;
49     return 0;
50 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: