字符串减法(大数)
#include<iostream> #include<string> #include<string.h> #include<stack> #include<queue> #include<map> #include<set> #include<vector> #define ll long long using namespace std; string add(string s1, string s2) { int i = s1.length() - 1; int j = s2.length() - 1; int ans = 0; string ss = ""; while (i >= 0 || j >= 0||ans!=0) { if (i >= 0) ans = ans + s1[i--] - '0'; if (j >= 0) ans = ans + s2[j--] - '0'; ss = ss + to_string(ans % 10); ans = ans / 10; } reverse(ss.begin(), ss.end()); return ss; } string sub(string s1, string s2) { int i = s1.length()-1; int j = s2.length()-1; int flag = 0; string ans = ""; while (i>=0&&j >=0) { s1[i] = s1[i] - flag; if (s1[i] >= s2[j]) { flag = 0; int temp = s1[i] - s2[j]; ans = ans + to_string(temp); } else { int temp = s1[i] - s2[j] + 10; ans = ans + to_string(temp); flag = 1; } i--, j--; } while (i>=0) {//处理剩余部分 if (flag == 0) ans = ans + s1[i]; else { int temp = s1[i] - '1'; ans = ans + to_string(temp); } i--; } //翻转并去除前导0 int len = ans.length(); string ss = ""; for (int i = len-1; i>=0; i--) { if (ans[i] == '0') continue; ss = ss + ans[i]; } return ss; } int main() { string s1, s2; cin >> s1 >> s2; cout << sub(s1, s2) << endl; system("pause"); return 0; }
等风起的那一天,我已准备好一切