好设计是简单的设计。
好设计是解决主要问题的设计。
好的设计并非一定要有趣,但是很难想象完全无趣的设计会是好设计。——Paul Graham《黑客与画家》
描述
两个长度超出常规整形变量上限的大数相减,请避免使用各语言内置大数处理库,如 Java.math.BigInteger 等。
输入
有 N 行测试数据,每一行有两个代表整数的字符串 a 和 b,长度超过百位。规定 a>=b,a, b > 0。 测试结果可以用 linux 小工具 bc
进行测试是否正确。
输出
返回表示结果整数的字符串。
输入样例
1231231237812739878951331231231237812739878951331231231237812739878951331231231237812739878951331231231237812739878951331231231237812739870-89513312312312378127398789513312312312378127398789513312312312378127398789513 1231231237812739878951331231231237812739878951331231231237812739878951331230000000000000000000000001-331231231237812739878951331231231
输出样例
1231231237812739878951331231231237812739878951331231231237812650365639018918853110413950365639018918853110413950365639018918853110413950357 1231231237812739878951331231231237812739878951331231231237812739878620099998762187260121048668768770
AC代码:
#include <bits/stdc++.h> using namespace std; string ASubB(string a,string b){//默认A比B大 int i = a.size(); int j = b.size(); string c; for(int k = 0;k<i-j;k++){ c = c+"0"; } c = c+b; //转化为位数相同的A-C的问题 for(int k = c.size();k>=0;k--){ if(a[k] == -1){ a[k] = 0; a[k-1] = a[k-1] - 1; } if(a[k] < c[k]){ a[k-1]--; a[k] = a[k] +10; } a[k] = a[k] - c[k]+48; } return a; } int main() { string s; while(cin>>s){ int k = s.find("-"); //cout<<k<<endl; string a = s.substr(0,k); string b = s.substr(k+1,s.size()); //cout<<a<<endl; //cout<<b<<endl; cout<<ASubB(a,b)<<endl; } }