結果
| 問題 |
No.9008 空白区切りで与えられる数値データの合計値を求める(テスト用)
|
| ユーザー |
|
| 提出日時 | 2019-02-24 16:54:54 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,040 bytes |
| コンパイル時間 | 763 ms |
| コンパイル使用メモリ | 61,148 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-12-23 06:29:25 |
| 合計ジャッジ時間 | 2,034 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 14 WA * 1 |
ソースコード
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int parseInt() {
string line;
getline(std::cin, line);
size_t parsed;
int const N = stoi(line, &parsed);
if (parsed != line.size()) {
cout << "Malformed integer input: " << line << endl;
exit(1);
}
return N;
}
typedef unsigned long long NumberPart; /* 0~2^64-1 */
typedef unsigned char Digit; /* 0~255 */
void accumulate(vector<Digit> &digits, NumberPart part) {
// Add each digit from part to digits using division by 10
size_t di = 0;
bool carry = 0;
while (part or carry) {
while (di >= digits.size()) {
digits.push_back(0);
}
Digit const sum = digits[di] + (part % 10) + carry;
carry = sum / 10;
digits[di] = sum % 10;
di++;
part /= 10;
}
}
int main(void) {
int const N = parseInt();
vector<Digit> digits;
for (int i = 0; i < N; ++i) {
NumberPart part;
cin >> part;
accumulate(digits, part);
}
for (int i = digits.size() - 1; i >= 0; --i) {
cout << to_string(digits[i]);
}
cout << endl;
return 0;
}