はまやんはまやんはまやん

hamayanhamayan's blog

Multiplication 3 [AtCoder Beginner Contest 169 C]

https://atcoder.jp/contests/abc169/tasks/abc169_c

解説

https://atcoder.jp/contests/abc169/submissions/13920372

小数が絡む計算でやはり気になるのが誤差である。
普通に入力してもいいが、整数でできないかを考えてみる。
A×Bをするが、100倍をしてやると、整数になる。
100倍をした後に÷100をして、かつ、切り捨ててやると、A×Bの小数点以下切り捨てとなる。
この方針でやろう。

C++であれば、scanfを使うのがいい。
scanf("%lld %lld.%lld", &A, &B1, &B2);
便利。
これで、B1*100+B2をしてやると、Bを100倍したものが得られる。
あとは、Aとかけて100で切り捨てで割れば答え。

ll A, B1, B2;
//---------------------------------------------------------------------------------------------------
void _main() {
    scanf("%lld %lld.%lld", &A, &B1, &B2);

    ll ans = A * (B1 * 100 + B2) / 100;
    cout << ans << endl;
}