原来一直比较烦大数题,写了两个慢慢好了,几点注意以下
1.变量名以后要养成习惯和规律
2. printf输出string要转换成c_str()
/*
PROG:A + B Problem
LANG: C++11
*/
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdlib>
#include <climits>
#include <ctype.h>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <deque>
#include <set>
#include <map>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <time.h>
using namespace std;
#define mst(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const int N = 100010;
const ll MOD = 1000000007;
const int INF = 0x7fffffff;
void solve(string s1, string s2, int t, int tt){
int m = s1.size()-1;
int n = s2.size()-1;
int carry = 0;
int d1, d2;
string ans;
for(int i = m, j = n; i >= 0 || j >= 0 || carry ; i--, j--){
d1 = i >= 0 ? int(s1[i] - '0') : 0;
d2 = j >= 0 ? int(s2[j] - '0') : 0;
carry = carry + d1 + d2;
ans = (char) (carry%10 + '0') + ans;
carry /= 10;
}
printf("Case %d:\n", t);
printf("%s + %s = %s\n", s1.c_str(), s2.c_str(), ans.c_str());
if(t != tt)
printf("\n");
}
int main()
{
int n;
cin >> n;
string s1, s2;
for(int i = 1; i <= n; i++){
cin >> s1 >> s2;
solve(s1, s2, i, n);
}
return 0;
}