Submission #73935969


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

#if __has_include(<atcoder/all>)
#include <atcoder/all>
using namespace atcoder;
#endif

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define fix(x) fixed << setprecision(x)
#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)
#define repe(i, start, end) for (auto i = (start); (i) <= (end); (i)++)
#define rrep(i, start, end) for (auto i = (start); (i) >= (end); (i)--)

constexpr auto PI = 3.14159265358979;
constexpr int INF = 1e+9;
constexpr long long INFL = 1e+18;

using ll = long long;
using lld = long double;
// using mint = modint1000000007;
// using mint = modint998244353;
using Pair_int = pair<int, int>;
using Pair_ll = pair<ll, ll>;
template <class T>
using Graph = vector<vector<T>>;

template <class T1, class T2>
inline auto div_floor(T1 a, T2 b)
{
    if (b < 0)
        a *= -1, b *= -1;
    if (a >= 0)
        return a / b;
    else
        return (a + 1) / b - 1;
}
template <class T1, class T2>
inline auto div_ceil(T1 a, T2 b)
{
    if (b < 0)
        a *= -1, b *= -1;
    if (a <= 0)
        return a / b;
    else
        return (a - 1) / b + 1;
}
ll floor_sqrt(ll x)
{
    ll y = sqrt(x);
    while (y * y > x)
        y--;
    while ((y + 1) * (y + 1) <= x)
        y++;
    return y;
}
ll pow_int(ll x, ll n)
{
    ll res = 1;
    while (n > 0)
    {
        if (n & 1)
            res *= x;
        x *= x;
        n >>= 1;
    }
    return res;
}
ll pow_mod(ll x, ll n, ll mod)
{
    ll res = 1;
    while (n > 0)
    {
        if (n & 1)
            res = res * x % mod;
        x = x * x % mod;
        n >>= 1;
    }
    return res;
}
ll gcd(ll x, ll y)
{
    if (x < y)
        swap(x, y);
    ll r;
    while (y > 0)
    {
        r = x % y;
        x = y;
        y = r;
    }
    return x;
}
ll lcm(ll x, ll y) { return ll(x / gcd(x, y)) * y; }
ll nCk(ll n, ll r)
{
    if (r < 0 || n < r)
        return 0;
    ll ans = 1;
    for (ll i = 1; i <= r; i++)
    {
        ans *= n--;
        ans /= i;
    }
    return ans;
}
int get_rand(int seed, int min, int max)
{
    static mt19937_64 mt64(seed);
    uniform_int_distribution<int> get_rand_int(min, max);
    return get_rand_int(mt64);
}
template <typename T>
inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); }
template <typename T>
inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }
template <class T1, class T2>
inline auto mod(T1 x, T2 r) { return (x % r + r) % r; }

// ======================================== //

using mint = static_modint<10007>;
using mintM = dynamic_modint<1>;
using mint9M = dynamic_modint<2>;

int main()
{
    ll K, M;
    cin >> K >> M;
    vector<ll> c(K), l(K);
    rep(i, 0, K) cin >> c[i] >> l[i];
    mintM::set_mod(M);
    mint9M::set_mod(9 * M);

    mint N_mint = 0;
    mintM R = 0;

    rep(i, 0, K)
    {
        N_mint = N_mint * mint(10).pow(l[i]) + (c[i] * (mint(10).pow(l[i]) - 1) * mint(9).inv());
        ll r = (mint9M(10).pow(l[i]).val() - 1) / 9;
        R = R * mintM(10).pow(l[i]) + mintM(r) * c[i];
    }

    mint ans = (N_mint - R.val()) * mint(M).inv();
    cout << ans.val() << endl;

    return 0;
}

Submission Info

Submission Time
Task E - Simple Division
User Yuulis
Language C++23 (GCC 15.2.0)
Score 450
Code Size 3350 Byte
Status AC
Exec Time 92 ms
Memory 4996 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 3
AC × 43
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt
Case Name Status Exec Time Memory
hand_01.txt AC 1 ms 3520 KiB
hand_02.txt AC 1 ms 3468 KiB
hand_03.txt AC 1 ms 3400 KiB
hand_04.txt AC 1 ms 3592 KiB
hand_05.txt AC 1 ms 3304 KiB
sample_01.txt AC 1 ms 3348 KiB
sample_02.txt AC 1 ms 3520 KiB
sample_03.txt AC 1 ms 3520 KiB
test_01.txt AC 1 ms 3456 KiB
test_02.txt AC 81 ms 4808 KiB
test_03.txt AC 80 ms 4868 KiB
test_04.txt AC 89 ms 4724 KiB
test_05.txt AC 89 ms 4960 KiB
test_06.txt AC 90 ms 4808 KiB
test_07.txt AC 89 ms 4900 KiB
test_08.txt AC 89 ms 4900 KiB
test_09.txt AC 89 ms 4752 KiB
test_10.txt AC 89 ms 4852 KiB
test_11.txt AC 89 ms 4808 KiB
test_12.txt AC 90 ms 4880 KiB
test_13.txt AC 92 ms 4868 KiB
test_14.txt AC 91 ms 4804 KiB
test_15.txt AC 89 ms 4932 KiB
test_16.txt AC 89 ms 4808 KiB
test_17.txt AC 90 ms 4808 KiB
test_18.txt AC 89 ms 4748 KiB
test_19.txt AC 90 ms 4748 KiB
test_20.txt AC 89 ms 4680 KiB
test_21.txt AC 89 ms 4868 KiB
test_22.txt AC 89 ms 4748 KiB
test_23.txt AC 88 ms 4932 KiB
test_24.txt AC 89 ms 4960 KiB
test_25.txt AC 90 ms 4952 KiB
test_26.txt AC 89 ms 4960 KiB
test_27.txt AC 89 ms 4880 KiB
test_28.txt AC 88 ms 4772 KiB
test_29.txt AC 88 ms 4932 KiB
test_30.txt AC 87 ms 4996 KiB
test_31.txt AC 88 ms 4780 KiB
test_32.txt AC 88 ms 4884 KiB
test_33.txt AC 89 ms 4748 KiB
test_34.txt AC 88 ms 4724 KiB
test_35.txt AC 89 ms 4756 KiB