1.java
public class sum{ public static void main(){ Scanner cin = new Scanner(System.in); while(cin.hasNext()){ BigInteger a = cin.BigInteger(); BigInteger b = cin.BigInteger(); BigInteger s = a+b; System.out.println(s); } } }2.c++数组模拟
int main() { vector<int> a(1000,0); vector<int> b(1000,0); string s1, s2; while (cin >> s1 >> s2) { int len = max(s1.size(), s2.size()); vector<int> res(len+1); vector<int> carry(len + 1,0); //反序将字符串转化为数字存入数组 for (int i = s1.size()-1, j = 0; i >= 0; --i, j++) { a[j] = s1[i]-'0'; } for (int i = s2.size()-1, j = 0; i >= 0; --i, j++) { b[j] = s2[i]-'0'; } for (int i = 0; i < len; ++i) { int sum = a[i] + b[i] + carry[i]; res[i] = sum % 10; carry[i+1] = sum / 10; } res[len] = carry[len]; if (carry[len] == 1) { res[len] = carry[len]; } else { len--; } for (int i = len; i >= 0; --i) { cout << res[i]; } } }不用进位数组的写法:
int main() { vector<int> a(1000,0); vector<int> b(1000,0); string s1, s2; while (cin >> s1 >> s2) { int len = max(s1.size(), s2.size()); vector<int> res(len+1); //反序将字符串转化为数字存入数组 for (int i = s1.size()-1, j = 0; i >= 0; --i, j++) { a[j] = s1[i]-'0'; } for (int i = s2.size()-1, j = 0; i >= 0; --i, j++) { b[j] = s2[i]-'0'; } for (int i = 0; i < len; ++i) { res[i] += a[i] + b[i]; res[i + 1] = res[i] / 10; res[i] = res[i] % 10; } if (res[len] == 0) { len--; } for (int i = len; i >= 0; --i) { cout << res[i]; } } }