#include
#include
#include
using namespace std;
string a, b, ans;
int main() {
cin >> a >> b;
int aa = a.length();
int bb = b.length();
int ss = min(aa, bb);
int ll = max(aa, bb);
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < ss; i++) {
ans += a[i] + b[i] - '0';
}
if (aa < bb) {
for (int i = ss; i < ll; i++) {
ans += b[i];
}
} else if (aa > bb) {
for (int i = ss; i < ll; i++) {
ans += a[i];
}
}
ans += '0';
for (int i = 0; i < ll + 1; i++) {
if (ans[i] > '9') {
ans[i + 1]++;
ans[i] -= 10;
}
}
reverse(ans.begin(), ans.end());
for (int i = ans.find_first_not_of('0'); i < ll + 1; i++) {
if (i == -1) {
cout << 0;
return 0;
}
cout << ans[i];
}
return 0;
}
一共三道题,谢谢啦
//第一题
//求两个不超过400位的非负整数的和
#include <stdio.h>
#include <string.h>
int main()
{
int c, N; //测试数据的组数
scanf("%d", &N);
c = getchar(); //接收缓冲区的\n
char num1[401]; //接收第一个数字
char num2[401]; //接收第二个数字
char sum[402]; //接受和
int i1, i2, i, k;
for (k = 0; k < N; ++k)
{
//初始化
memset(num1, 0, sizeof(num1));
memset(num2, 0, sizeof(num2));
memset(sum, 0, sizeof(sum));
int ch;
for (i1 = 0; (ch = getchar()) != ' '; ++i1)
{
num1[i1] = ch;
}
for (i2 = 0; (ch = getchar()) != '\n' && ch != EOF; ++i2)
{
num2[i2] = ch;
}
i1--;
i2--;
i = 400;
int tmp = 0; //存储进位
int add = 0; //存储每一位的数字
while (i1 >= 0 && i2 >= 0)
{
add = num1[i1--] + num2[i2--] - '0' * 2 + tmp;
sum[i--] = add % 10 + '0';
tmp = add / 10;
}
while (i1 >= 0)
{
add = num1[i1--] - '0' + tmp;
sum[i--] = add % 10 + '0';
tmp = add / 10;
}
while (i2 >= 0)
{
add = num2[i2--] - '0' + tmp;
sum[i--] = add % 10 + '0';
tmp = add / 10;
}
printf("%s\n", sum + i + 1);
}
return 0;
}
#include
#include
#include
using namespace std;
string a, b, ans;
int main() {
cin >> a >> b;
int aa = a.length();
int bb = b.length();
int ss = min(aa, bb);
int ll = max(aa, bb);
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < ss; i++) {
ans += a[i] + b[i] - '0';
}
if (aa < bb) {
for (int i = ss; i < ll; i++) {
ans += b[i];
}
} else if (aa > bb) {
for (int i = ss; i < ll; i++) {
ans += a[i];
}
}
ans += '0';
for (int i = 0; i < ll + 1; i++) {
if (ans[i] > '9') {
ans[i + 1]++;
ans[i] -= 10;
}
}
reverse(ans.begin(), ans.end());
for (int i = ans.find_first_not_of('0'); i < ll + 1; i++) {
if (i == -1) {
cout << 0;
return 0;
}
cout << ans[i];
}
return 0;}
是这样的吧?