Submission #53674275
Source Code Expand
//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,fma")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,sse4a,avx,avx2,popcnt,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define all(v) (v).begin(), (v).end()
#define sz(a) ((long long)(a).size())
#define X first
#define Y second
using ll = long long;
using ull = unsigned long long;
using dbl = long double;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll myRand(ll myRandMod) {
return (ull)rng() % myRandMod;
}
const ll INF = 1e9;
const ll LINF = 1e18;
const int MOD = 998244353;
const int MAXN = 4e5 + 555;
ll pw(ll x, ll y) {
if (y == 0) {
return 1;
}
if (y & 1) {
return x * pw(x, y - 1) % MOD;
} else {
return pw(x * x % MOD, y / 2);
}
}
ll inv2 = pw(2, MOD - 2);
ll calc_sum(ll x, ll y) {
return ((x + y) * (y - x + 1) % MOD * inv2 % MOD + MOD) % MOD;
}
vector<ll> a(4);
ll ans;
void solve1() {
ll val0 = pw(10, a[1]);
ll val1 = pw(10, a[1] + 1);
if (a[2] != a[1]) {
ans = calc_sum(val0, (val1 + MOD - 1) % MOD);
} else {
ans = calc_sum(val0, (val1 - val0 + MOD) % MOD);
ans = (ans + (val1 - val0) * (val0 - 1) % MOD + MOD) % MOD;
}
}
void solve0() {
solve1();
ll val0 = pw(10, a[1]);
ll val1 = pw(10, a[1] + 1);
ll val2 = pw(10, a[2]);
ll val3 = pw(10, a[2] + 1);
ans = ((val1 - val0 + MOD) * (val3 - val2 + MOD) % MOD - ans + MOD) % MOD;
}
void solve() {
cin >> a[1] >> a[2] >> a[3];
if (a[2] < a[1]) {
swap(a[1], a[2]);
}
for (int i = 1; i <= 3; ++i) {
--a[i];
}
ans = 0;
if (a[3] == a[2] + 1) {
solve1();
} else if (a[3] == a[2]) {
solve0();
}
cout << ans << "\n";
}
signed main() {
#ifdef LOCAL
assert(freopen("in.txt", "r", stdin));
assert(freopen("out.txt", "w", stdout));
#endif
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout << fixed << setprecision(20);
int T = 1;
cin >> T;
for (int numt = 0; numt < T; ++numt) {
solve();
}
#ifdef LOCAL
cout << endl << endl << "time = " << clock() / (double)CLOCKS_PER_SEC << endl;
#endif
}
Submission Info
| Submission Time |
|
| Task |
B - 1 + 6 = 7 |
| User |
mHuman |
| Language |
C++ 20 (gcc 12.2) |
| Score |
600 |
| Code Size |
2335 Byte |
| Status |
AC |
| Exec Time |
122 ms |
| Memory |
3540 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
01-sample-01.txt |
| All |
01-sample-01.txt, 02-min-01.txt, 03-max-01.txt, 04-rand-A-01.txt, 05-rand-B-01.txt, 06-rand-C-01.txt, 06-rand-C-02.txt, 06-rand-C-03.txt, 06-rand-C-04.txt, 07-near-01.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01-sample-01.txt |
AC |
1 ms |
3392 KiB |
| 02-min-01.txt |
AC |
14 ms |
3540 KiB |
| 03-max-01.txt |
AC |
22 ms |
3480 KiB |
| 04-rand-A-01.txt |
AC |
90 ms |
3472 KiB |
| 05-rand-B-01.txt |
AC |
20 ms |
3484 KiB |
| 06-rand-C-01.txt |
AC |
57 ms |
3476 KiB |
| 06-rand-C-02.txt |
AC |
121 ms |
3320 KiB |
| 06-rand-C-03.txt |
AC |
59 ms |
3488 KiB |
| 06-rand-C-04.txt |
AC |
122 ms |
3540 KiB |
| 07-near-01.txt |
AC |
33 ms |
3476 KiB |