不要让昨天 占据你的今天 夏午晴天

夏午晴天

大数减法

 

 

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string>
 4 using namespace std;
 5 
 6 string sub(string str1, string str2)
 7 {
 8     string str;
 9     int flag = 0;
10     if(str1.length() < str2.length() || ((str1.length() == str2.length()) && (str1[1] < str2[1])))
11     {
12         flag = 1;
13         string str = str1;
14         str1 = str2;
15         str2 = str;
16     }
17     int tmp = str1.length() - str2.length();
18     int ans = 0;
19     for(int i = str2.length() - 1; i >= 0;i--)
20     {
21         if(str1[tmp + i] < str2[i] + ans)
22         {
23             str = char(10 - ans + str1[tmp + i] - str2[i] + '0') + str;
24             ans = 1;
25         }
26         else{
27             str = char(str1[tmp + i] - ans - str2[i] + '0') + str;
28             ans = 0;
29         }
30     }
31     for(int i = tmp - 1; i >= 0;i--)
32     {
33         if(str1[i] - ans >= '0')
34         {
35             str = char(str1[i] - ans) + str;
36             ans = 0;
37         }
38         else{
39             str = char(str1[i] + 10 - ans) + str;
40             ans = 1;
41         }
42     }
43     str.erase(0,str.find_first_not_of('0'));
44     if(flag)
45         str = '-' + str;
46     return str;
47 }
48 
49 int main()
50 {
51     string str1, str2;
52     while(cin >> str1 >> str2)
53     {
54         cout << sub(str1,str2) << endl;
55     }
56     return 0;
57 }

 两个数均为非负数

posted on 2017-03-23 09:39  夏晴天  阅读(117)  评论(0编辑  收藏  举报

导航

Live2D