大数减法模板
计算 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 }
我就是我,颜色不一样的烟火 --- geloutingyu