結果
| 問題 |
No.81 すべて足すだけの簡単なお仕事です。
|
| コンテスト | |
| ユーザー |
@abcde
|
| 提出日時 | 2019-05-11 19:35:39 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,103 bytes |
| コンパイル時間 | 1,574 ms |
| コンパイル使用メモリ | 169,416 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-02 01:17:34 |
| 合計ジャッジ時間 | 2,721 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 WA * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main() {
// 1. 入力情報取得.
int N;
cin >> N;
// 2. 加算.
// -> 1e10倍して考える.
long double ans = 0.0;
for(int i = 0; i < N; i++){
string s;
cin >> s;
// 2-1. 符号取得.
char sign = s[0];
int pos = s.find(".");
// 2-2. ピリオドある場合, 前半, 後半に分割.
if(pos != string::npos){
string l = s.substr(0, pos);
string r = s.substr(pos + 1, s.size() - pos - 1);
while(r.size() < 10) r += '0';
// cout << "l=" << l << " r=" << r << endl;
ans += (stod(l) * 1e10);
if(sign == '-') ans -= stod(r);
else ans += stod(r);
}
// 2-3. ピリオドが無い場合.
if(pos == string::npos) ans += (stod(s) * 1e10);
}
// 3. 出力.
// -> 1e10で割り戻す.
ans /= (1e10 + 0.0);
cout << fixed;
cout << setprecision(10) << ans << endl;
return 0;
}
@abcde