結果
問題 |
No.81 すべて足すだけの簡単なお仕事です。
|
ユーザー |
|
提出日時 | 2025-05-15 17:28:37 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,163 bytes |
コンパイル時間 | 2,692 ms |
コンパイル使用メモリ | 196,980 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-05-15 17:28:44 |
合計ジャッジ時間 | 4,195 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 30 |
ソースコード
module main; // https://yang33-kassa.jp/yukicoder/yukicoder081/ より import std; void main() { // 入力 int N = readln.chomp.to!int; // 答えの計算と出力 auto vs = new string[](N); long pA = 0, pB = 0; long mA = 0, mB = 0; immutable base = 10L ^^ 10; foreach (i; 0 .. N) { vs[i] = readln.chomp; bool minus = false; if (vs[i][0] == '-') { minus = true; vs[i].popFront; } auto pos = vs[i].countUntil('.'); if (pos == -1) { pos = vs[i].length; vs[i] ~= '.'; } long a = 0; foreach (j; 0 .. pos) { a *= 10; a += vs[i][j] - '0'; } long b = 0; vs[i] ~= "0".replicate(15); foreach (j; pos + 1 .. pos + 11) { b *= 10; b += vs[i][j] - '0'; } if (!minus) { pA += a, pB += b; pA += pB / base; pB %= base; } else { mA += a, mB += b; mA += mB / base; mB %= base; } } // 正の数と負の数の差 long nDiff = pA - mA; nDiff -= pB - mB < 0; if (nDiff >= 0) { pB -= mB; if (pB < 0) { pB += base; mA++; } pA -= mA; writefln("%d.%010d", pA, pB); } else { mB -= pB; if (mB < 0) { mB += base; pA++; } mA -= pA; writefln("-%d.%010d", mA, mB); } }