交上去的时候一直显示输出的答案太长但本地编译显示的输出结果和正确输出没啥差别……下载了测试点看了一下最简单的没炸int也没进位的测试点都过不去……求dalao看一眼哪出了问题,自己重写了几遍都卡在这个问题上实在不知道怎么做了……
#include <bits/stdc++.h>
#include <string>
#include <algorithm>
using namespace std;
// 读入数字并将其逆序存放入数组,因此个位->0,十位->1……
void input(int arr[]) {
string str;
getline(cin, str);
for (int i = str.length() - 1, j = 0; i + 1; i--, j++) {
arr[j] = str[i] - '0';
}
}
// 结果输出
void output(int arr[], int array_digit) {
for (int i = array_digit - 1; i + 1; i--) {
cout << arr[i];
}
}
// 模拟加法
void add(int a[], int a_digit, int b[], int b_digit, int sum[]) {
for (int i = 0; i < max(a_digit, b_digit); i++) {
sum[i] += a[i] + b[i];
if (sum[i] >= 10) {
sum[i] -= 10;
sum[i + 1] ++;
}
}
}
// 判断位数
int digit(int arr[]) {
for (int digit_count = 549; digit_count; digit_count--) {
if (arr[digit_count]) {
return digit_count + 1;
}
}
return 1;
}
int main() {
int a[550] = {0}, a_digit, b[550] = {0}, b_digit, sum[550] = {0}, sum_digit;
input(a);
input(b);
a_digit = digit(a);
b_digit = digit(b);
add(a, a_digit, b, b_digit, sum);
sum_digit = digit(sum);
output(sum, sum_digit);
return 0;
}