#include<iostream> #include<vector> using namespace std; bool cmp(vector<int> A,vector<int> B) // 判断A是否大于等于B { if(A.size() != B.size()) return A.size() > B.size(); else { for(int i = A.size() - 1;i >= 0;i --) if(A[i] != B[i]) return A[i] > B[i]; } return true; } vector<int> sub(vector<int> A,vector<int> B) // 减法模板 { vector<int> c; int t = 0; for(int i = 0;i < A.size() || i < B.size();i ++) { t = A[i] - t; if(i < B.size()) t -= B[i]; c.push_back((t + 10) % 10); if(t < 0) t = 1; // 如果t小于0说明借位了 else t = 0; } while(c.size() > 1 && c.back() == 0) c.pop_back(); // 将前导0删掉 return c; } int main() { int t; cin >> t; int k = 1; while(t --) { string a, b; cin >> a >> b; vector<int> A, B; for(int i = a.size() - 1;i >= 0;i --) A.push_back(a[i] - '0'); for(int i = b.size() - 1;i >= 0;i --) B.push_back(b[i] - '0'); if(cmp(A,B)) { auto c = sub(A,B); cout << "Case #"<<k++<<":"<<endl; for(int i = c.size() - 1;i >= 0;i --) cout << c[i]; } else { auto c = sub(B,A); cout << "Case #"<<k++<<":"<<endl; cout << "-"; for(int i = c.size() - 1;i >= 0;i --) cout << c[i]; } cout << endl; } return 0; } |
Double click to view unformatted code.