牛客小白月赛22-J题
计算A+B
本题大数加法。较为简单。
处理异常的时候注意:可能不是数字0~9.可能为其他ASCII码值。所以防坑千万注意。
然后python对这道题十分友好。
代码简洁易懂。
这里提供C/C++代码部分:加法进位问题注意。然后输出0的时候特判。不要输出多个0了
代码部分:
#include <bits/stdc++.h>
#define mst(a, n) memset(a, n, sizeof(a))
using namespace std;
const int N = 1e4 + 10;
char s[N];
int s1[N];
int s2[N];
int main()
{
int t;
cin >> t;
while (t--)
{
scanf ("%s", s + 1);
int n = strlen(s + 1);
int flag = 0;
int pos = -1;
for (int i = 1; i <= n; i++)
{
if (s[i] == '+')
{
pos = i;
flag++;
continue;
}
if (s[i] < '0' || s[i] > '9')
{
flag = -1;
break;
}
}
if (flag != 1 || pos == 1 || pos == n)
{
cout << "skipped\n";
continue;
}
mst(s1, 0);
mst(s2, 0);
int c1 = 0, c2 = 0;
for (int i = pos - 1; i >= 1; i--)
{
s1[++c1] = s[i] - '0';
}
for (int i = n; i >= pos + 1; i--)
{
s2[++c2] = s[i] - '0';
}
int maxx = max(c1, c2) + 1;
for (int i = 1; i <= maxx; i++)
{
s1[i] += s2[i];
if (s1[i] >= 10)
{
s1[i + 1]++;
s1[i] -= 10;
}
}
while (maxx >= 1 && !s1[maxx])
{
maxx--;
}
if (!maxx)
{
cout << "0\n";
continue;
}
for (int i = maxx; i >= 1; i--)
{
cout << s1[i];
}
cout << endl;
}
return 0;
}