题目:
读入三个整数,计算三个整数的和。
输入格式
读入三行,每行一个整数。整数的位数不超过 10001000。
输出格式
输出一个整数,表示这三个数的和。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 abc.in,输出文件为 abc.out
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
int a[3][1005], len[3];
string num[3];
int main() {
freopen("abc.in", "r", stdin);
freopen("abc.out", "w", stdout);
for (int i = 0; i < 3; i++) {
cin >> num[i];
}
for (int i = 0; i < 3; i++) {
len[i] = num[i].size();
for (int j = 0; j < len[i]; j++) {
a[i][j] = num[i][len[i] - 1 - j] - '0';
}
}
for (int i = 1; i < 3; i++) {
len[0] = max(len[0], len[i]);
for (int j = 0; j < len[0]; j++) {
a[0][j] += a[i][j];
}
}
for (int j = 0; j < len[0]; j++) {
a[0][j + 1] += a[0][j] / 10;
a[0][j] %= 10;
}
while (a[0][len[0]]) {
a[0][len[0] + 1] += a[0][len[0]] / 10;
a[0][len[0]] %= 10;
}
while (a[0][len[0]]) {
a[0][len[0] + 1] += a[0][len[0]] / 10;
a[0][len[0]] %= 10;
len[0]++;
}
for (int i = len[0] - 1; i >= 0; i--) {
cout << a[0][i];
}
cout << endl;
return 0;
}
测试结果:
测评信息
================================================
测评用例 1:正确通过 [2.000 毫秒,448 KB]
---------------------------
测评用例 2:正确通过 [1.000 毫秒,448 KB]
---------------------------
测评用例 3:运行超时 [3,000.000 毫秒,444 KB]
用例输入:
59380248390522737902399703986576270399917236558147138480460326941378838153543659……
38232545435624283942618270827932577950443597448212430922923475416464599289138936……
95201315424599457304371257529133099316698528678680201965238270710142106445034555……
用例正确输出:
19281410925074647914938923234364194766705936268503977136862207306798554388771715……
你的输出:
---------------------------
测评用例 4:正确通过 [1.000 毫秒,448 KB]
---------------------------
测评用例 5:运行超时 [2,999.000 毫秒,444 KB]
结果
================================================
共 5 组测评用例,通过 3 组。
总分
================================================
6