[AtCoder] ABC 169 C – Multiplication 3
問題
方針
オーバーフローが問題となるので、整数部と小数部に分けて計算します。\( B \) を \(100\) 倍する方法だと誤差がでるので、文字列として扱います。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll A; string B; cin >> A >> B; ll iB = (ll)(B[0] - '0'); ll dB = 0; if (B.length() == 4) { dB = 10 * (B[2] - '0') + (B[3] - '0'); } else if (B.length() == 3) { dB = (B[2] - '0'); } ll ans = (A *dB) / 100ll + A * iB; cout << ans << "\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません