Submission #73979622
Source Code Expand
// https://atcoder.jp/contests/abc448/tasks/abc448_e
// Sat 07 Mar 2026 09:33:20 PM JST
#include <bits/stdc++.h>
using namespace std;
#include <atcoder/all>
using namespace atcoder;
// using mint = modint998244353;
// using mint = modint1000000007;
// using vmint = vector<mint>;
// #include <boost/multiprecision/cpp_int.hpp>
// using namespace boost::multiprecision;
// using int128 = int128_t;
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define rep(i, n) for (long long int i = 0; i < (n); ++i)
#define rep2(i, k, n) for (long long int i = (k); i < (n); ++i)
#define pb push_back
using ll = long long;
using vint = vector<int>;
using vll = vector<ll>;
using vvint = vector<vector<int>>;
using vvll = vector<vector<ll>>;
const ll INF = (ll)2e18 + 9;
// const int INF = (int)2e9 + 7;
template <typename T>
bool chmin(T& a, T b) {
bool change = a > b;
a = min(a, b);
return change;
}
template <typename T>
bool chmax(T& a, T b) {
bool change = a < b;
a = max(a, b);
return change;
}
template <typename T>
void print(vector<T> v) {
int n = v.size();
rep(i, n) {
if (i == 0)
cout << v[i];
else
cout << ' ' << v[i];
}
cout << endl;
}
template <typename T>
void vprint(vector<T> v) {
for (auto x : v) cout << x << '\n';
}
void yesno(bool x) { cout << (x ? "Yes" : "No") << '\n'; }
void Yes() { yesno(true); }
void No() { yesno(false); }
// ceil(a/b)
ll ceil(ll a, ll b) { return (a + b - 1) / b; }
// floor(a/b)
ll floor(ll a, ll b) { return a / b; }
void solve();
int main() {
solve();
return 0;
}
ll modpow(ll x, ll n, ll mod) {
long long ret = 1;
while (n > 0) {
if (n & 1)
ret = (ret * x) % mod;
x = (x * x) % mod;
n >>= 1;
}
return ret;
}
struct Repunit {
ll mod;
int up = 32;
vll d; // d[i]: (1 が 2^i 個並んだ数字) % mod
Repunit(ll mod) : mod(mod) {
d.resize(up);
d[0] = 1 % mod;
rep2(i, 1, up) {
d[i] = d[i - 1] * modpow(10, 1ll << (i - 1), mod) + d[i - 1];
d[i] %= mod;
}
}
// (1 が n 個並んだ数) % mod
ll cal(ll n) {
ll ret = 0;
rep(i, up) {
if (n >> i & 1) {
ret *= modpow(10, 1ll << i, mod);
ret += d[i];
ret %= mod;
}
}
return ret;
}
};
void solve() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
ll K, M;
cin >> K >> M;
vll C(K), L(K);
rep(i, K) cin >> C[i] >> L[i];
auto cal = [&](ll mod) -> ll {
Repunit repunit(mod);
ll r = 0;
rep(i, K) {
r *= modpow(10, L[i], mod);
r += (C[i] * repunit.cal(L[i]));
r %= mod;
}
return r;
};
// 10007 は素数
ll mod = 10007;
ll r = cal(M);
ll n = cal(mod);
modint::set_mod(mod);
using mint = modint;
mint mr = mint(r), mn = mint(n);
cout << ((mn - mr) * mint(M).inv()).val() << endl;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Simple Division |
| User | goropikari |
| Language | C++23 (GCC 15.2.0) |
| Score | 450 |
| Code Size | 3239 Byte |
| Status | AC |
| Exec Time | 233 ms |
| Memory | 5068 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 450 / 450 | ||||
| Status |
|
|
| 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 | 3568 KiB |
| hand_02.txt | AC | 1 ms | 3696 KiB |
| hand_03.txt | AC | 1 ms | 3548 KiB |
| hand_04.txt | AC | 1 ms | 3556 KiB |
| hand_05.txt | AC | 1 ms | 3696 KiB |
| sample_01.txt | AC | 1 ms | 3636 KiB |
| sample_02.txt | AC | 1 ms | 3604 KiB |
| sample_03.txt | AC | 1 ms | 3532 KiB |
| test_01.txt | AC | 1 ms | 3644 KiB |
| test_02.txt | AC | 233 ms | 4952 KiB |
| test_03.txt | AC | 232 ms | 4912 KiB |
| test_04.txt | AC | 205 ms | 4896 KiB |
| test_05.txt | AC | 204 ms | 4844 KiB |
| test_06.txt | AC | 204 ms | 4924 KiB |
| test_07.txt | AC | 206 ms | 4996 KiB |
| test_08.txt | AC | 205 ms | 4992 KiB |
| test_09.txt | AC | 204 ms | 4844 KiB |
| test_10.txt | AC | 206 ms | 4964 KiB |
| test_11.txt | AC | 205 ms | 4908 KiB |
| test_12.txt | AC | 205 ms | 4924 KiB |
| test_13.txt | AC | 205 ms | 4844 KiB |
| test_14.txt | AC | 204 ms | 4908 KiB |
| test_15.txt | AC | 208 ms | 5068 KiB |
| test_16.txt | AC | 205 ms | 4912 KiB |
| test_17.txt | AC | 204 ms | 4964 KiB |
| test_18.txt | AC | 204 ms | 5056 KiB |
| test_19.txt | AC | 206 ms | 5024 KiB |
| test_20.txt | AC | 205 ms | 4952 KiB |
| test_21.txt | AC | 206 ms | 4888 KiB |
| test_22.txt | AC | 205 ms | 4976 KiB |
| test_23.txt | AC | 206 ms | 4844 KiB |
| test_24.txt | AC | 205 ms | 5056 KiB |
| test_25.txt | AC | 204 ms | 4896 KiB |
| test_26.txt | AC | 205 ms | 4896 KiB |
| test_27.txt | AC | 204 ms | 5068 KiB |
| test_28.txt | AC | 205 ms | 4996 KiB |
| test_29.txt | AC | 206 ms | 4964 KiB |
| test_30.txt | AC | 205 ms | 5052 KiB |
| test_31.txt | AC | 205 ms | 5052 KiB |
| test_32.txt | AC | 206 ms | 4996 KiB |
| test_33.txt | AC | 204 ms | 5024 KiB |
| test_34.txt | AC | 206 ms | 4996 KiB |
| test_35.txt | AC | 205 ms | 4996 KiB |