結果

問題 No.1842 Decimal Point
ユーザー srjywrdnprkt
提出日時 2025-03-29 03:48:36
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 495 ms / 2,000 ms
コード長 886 bytes
コンパイル時間 10,288 ms
コンパイル使用メモリ 475,112 KB
実行使用メモリ 7,324 KB
最終ジャッジ日時 2025-03-29 03:48:49
合計ジャッジ時間 11,654 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 5
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <boost/multiprecision/cpp_int.hpp>

using namespace std;
using namespace boost::multiprecision;
using ll = cpp_int;

ll mod_exp(ll b, ll e, ll m){
    if (e > 0 && b == 0) return 0;
    ll ans = 1 % m;
    b %= m;

    while (e > 0){
        if ((e & 1)) ans = (ans * b) % m;
        e >>= 1;
        b = (b*b) % m;
    }

    return ans;
}

void solve(){
    ll A, B, C, P=1;
    cin >> A >> B >> C;
    /*
       floor(A*10^C/B) % 10;
       x/y mod Mを求める。
       
       x = py + q
       z = p mod Mを求める。
       p = p'M + z

       x = p'yM + zy + q
       (x % (My)) / y が答え。
    */

    P = mod_exp(10, C, B*10);
    P *= A;
    P %= B*10;
    P /= B;
    cout << P << endl;
}

int main(){
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);

    int T;
    cin >> T;
    while(T--) solve();

    return 0;
}

0