| Task: | Skittles |
| Sender: | rikachu |
| Submission time: | 2025-11-17 17:45:03 +0200 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.01 s | details |
| #5 | ACCEPTED | 0.01 s | details |
| #6 | ACCEPTED | 0.01 s | details |
| #7 | ACCEPTED | 0.01 s | details |
| #8 | ACCEPTED | 0.01 s | details |
| #9 | ACCEPTED | 0.01 s | details |
| #10 | ACCEPTED | 0.01 s | details |
| #11 | ACCEPTED | 0.01 s | details |
| #12 | ACCEPTED | 0.01 s | details |
| #13 | ACCEPTED | 0.01 s | details |
| #14 | ACCEPTED | 0.01 s | details |
| #15 | ACCEPTED | 0.01 s | details |
| #16 | ACCEPTED | 0.01 s | details |
| #17 | ACCEPTED | 0.03 s | details |
| #18 | ACCEPTED | 0.02 s | details |
| #19 | ACCEPTED | 0.03 s | details |
| #20 | ACCEPTED | 0.03 s | details |
| #21 | ACCEPTED | 0.02 s | details |
| #22 | ACCEPTED | 0.04 s | details |
| #23 | ACCEPTED | 0.01 s | details |
| #24 | ACCEPTED | 0.01 s | details |
| #25 | ACCEPTED | 0.01 s | details |
| #26 | ACCEPTED | 0.02 s | details |
| #27 | ACCEPTED | 0.04 s | details |
| #28 | ACCEPTED | 0.03 s | details |
| #29 | ACCEPTED | 0.01 s | details |
| #30 | ACCEPTED | 0.03 s | details |
| #31 | ACCEPTED | 0.02 s | details |
| #32 | ACCEPTED | 0.01 s | details |
| #33 | ACCEPTED | 0.03 s | details |
| #34 | ACCEPTED | 0.01 s | details |
| #35 | ACCEPTED | 0.01 s | details |
| #36 | ACCEPTED | 0.02 s | details |
| #37 | ACCEPTED | 0.02 s | details |
| #38 | ACCEPTED | 0.01 s | details |
| #39 | ACCEPTED | 0.01 s | details |
| #40 | ACCEPTED | 0.03 s | details |
| #41 | ACCEPTED | 0.01 s | details |
| #42 | ACCEPTED | 0.02 s | details |
| #43 | ACCEPTED | 0.02 s | details |
| #44 | ACCEPTED | 0.01 s | details |
| #45 | ACCEPTED | 0.02 s | details |
| #46 | ACCEPTED | 0.01 s | details |
| #47 | ACCEPTED | 0.02 s | details |
| #48 | ACCEPTED | 0.01 s | details |
| #49 | ACCEPTED | 0.01 s | details |
| #50 | ACCEPTED | 0.01 s | details |
| #51 | ACCEPTED | 0.01 s | details |
| #52 | ACCEPTED | 0.01 s | details |
| #53 | ACCEPTED | 0.01 s | details |
| #54 | ACCEPTED | 0.02 s | details |
| #55 | ACCEPTED | 0.02 s | details |
| #56 | ACCEPTED | 0.03 s | details |
| #57 | ACCEPTED | 0.02 s | details |
| #58 | ACCEPTED | 0.02 s | details |
| #59 | ACCEPTED | 0.03 s | details |
| #60 | ACCEPTED | 0.01 s | details |
| #61 | ACCEPTED | 0.01 s | details |
| #62 | ACCEPTED | 0.03 s | details |
| #63 | ACCEPTED | 0.03 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:91:26: warning: iteration 200001 invokes undefined behavior [-Waggressive-loop-optimizations]
91 | factorial[i] = factorial[i - 1] * i % m;
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
input/code.cpp:90:27: note: within this loop
90 | for (int i = 1; i <= MAXN; i++)
| ~~^~~~~~~Code
#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(), (x).end()
#define mp make_pair
#define fi first
#define se second
#define pb push_back
#define IOS ios_base::sync_with_stdio(0), cin.tie(0)
const int INF = 1001001001;
const int MAXN = 200'002;
const char br = '\n';
using ll = long long;
using vi = vector<int>;
using pii = pair<int, int>;
// === Debug macro starts here ===
int recur_depth = 0;
#ifdef DEBUG
#define dbg(x) \
{ \
++recur_depth; \
auto x_ = x; \
--recur_depth; \
cerr << string(recur_depth, '\t') << "\e[91m" << __func__ \
<< ":" << __LINE__ << "\t" << #x << " = " << x_ \
<< "\e[39m" << endl; \
}
#else
#define dbg(x)
#endif
template <typename Ostream, typename Cont>
typename enable_if<is_same<Ostream, ostream>::value, Ostream &>::type
operator<<(Ostream &os, const Cont &v) {
os << "[";
for (auto &x : v) {
os << x << ", ";
}
return os << "]";
}
// === Debug macro ends here ===
// print pair, vector
template <typename Ostream, typename... Ts>
Ostream &operator<<(Ostream &os, const pair<Ts...> &p) {
return os << "{" << p.first << ", " << p.second << "}";
}
template <typename T> ostream &operator<<(ostream &s, vector<T> t) {
for (const T &v : t) {
cout << v << " ";
}
return s;
}
int nxt() {
int x;
cin >> x;
return x;
}
static ll factorial[MAXN];
static ll m = 998'244'353;
ll modpow(ll x, ll n) {
if (n == 0) return 1 % m;
ll u = modpow(x, n/2);
u = (u * u) % m;
if (n % 2 == 1) u = (u * x) % m;
return u;
}
ll inv(ll a) {
return modpow(a, m - 2);
}
ll binomial_coefficient(ll n, ll k) {
return factorial[n] * inv(factorial[k] * factorial[n - k] % m) % m;
}
int main() {
IOS;
ll n, a, b;
cin >> n >> a >> b;
factorial[0] = 1;
for (int i = 1; i <= MAXN; i++)
factorial[i] = factorial[i - 1] * i % m;
ll res = 0;
for (int i = a; i <= b; i++) {
res += binomial_coefficient(i + n - 1, i) % m;
res %= m;
}
cout << res << br;
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 1 1 10 |
| correct output |
|---|
| 10 |
| user output |
|---|
| 10 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 2 3 3 |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 2 4 5 |
| correct output |
|---|
| 11 |
| user output |
|---|
| 11 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 3 4 5 |
| correct output |
|---|
| 36 |
| user output |
|---|
| 36 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 3 2 2 |
| correct output |
|---|
| 6 |
| user output |
|---|
| 6 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 5 5 5 |
| correct output |
|---|
| 126 |
| user output |
|---|
| 126 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 10 10 10 |
| correct output |
|---|
| 92378 |
| user output |
|---|
| 92378 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 10 1 10 |
| correct output |
|---|
| 184755 |
| user output |
|---|
| 184755 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 100 100 100 |
| correct output |
|---|
| 866655715 |
| user output |
|---|
| 866655715 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 10 100 100 |
| correct output |
|---|
| 918123961 |
| user output |
|---|
| 918123961 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 1000 10 10 |
| correct output |
|---|
| 84965120 |
| user output |
|---|
| 84965120 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 10000 10000 10000 |
| correct output |
|---|
| 658363258 |
| user output |
|---|
| 658363258 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 100000 |
| correct output |
|---|
| 966937032 |
| user output |
|---|
| 966937032 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 54883 59286 71521 |
| correct output |
|---|
| 908996595 |
| user output |
|---|
| 908996595 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 41703 72034 99721 |
| correct output |
|---|
| 139159644 |
| user output |
|---|
| 139159644 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 43601 2593 18509 |
| correct output |
|---|
| 804369499 |
| user output |
|---|
| 804369499 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 55081 7073 70816 |
| correct output |
|---|
| 806880502 |
| user output |
|---|
| 806880502 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 96705 54725 90064 |
| correct output |
|---|
| 521461113 |
| user output |
|---|
| 521461113 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 22200 5519 87075 |
| correct output |
|---|
| 866679044 |
| user output |
|---|
| 866679044 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 89288 33199 94750 |
| correct output |
|---|
| 812654801 |
| user output |
|---|
| 812654801 |
Test 21
Verdict: ACCEPTED
| input |
|---|
| 7631 22735 77994 |
| correct output |
|---|
| 30255908 |
| user output |
|---|
| 30255908 |
Test 22
Verdict: ACCEPTED
| input |
|---|
| 87345 1112 96856 |
| correct output |
|---|
| 944788802 |
| user output |
|---|
| 944788802 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 1038 36447 50189 |
| correct output |
|---|
| 654272260 |
| user output |
|---|
| 654272260 |
Test 24
Verdict: ACCEPTED
| input |
|---|
| 41703 72034 99721 |
| correct output |
|---|
| 139159644 |
| user output |
|---|
| 139159644 |
Test 25
Verdict: ACCEPTED
| input |
|---|
| 18028 1948 6831 |
| correct output |
|---|
| 631722506 |
| user output |
|---|
| 631722506 |
Test 26
Verdict: ACCEPTED
| input |
|---|
| 4873 28912 79929 |
| correct output |
|---|
| 106074189 |
| user output |
|---|
| 106074189 |
Test 27
Verdict: ACCEPTED
| input |
|---|
| 28606 2900 95813 |
| correct output |
|---|
| 538554734 |
| user output |
|---|
| 538554734 |
Test 28
Verdict: ACCEPTED
| input |
|---|
| 25093 4610 68059 |
| correct output |
|---|
| 799962519 |
| user output |
|---|
| 799962519 |
Test 29
Verdict: ACCEPTED
| input |
|---|
| 67575 4472 32712 |
| correct output |
|---|
| 857647130 |
| user output |
|---|
| 857647130 |
Test 30
Verdict: ACCEPTED
| input |
|---|
| 82449 18136 86245 |
| correct output |
|---|
| 420446937 |
| user output |
|---|
| 420446937 |
Test 31
Verdict: ACCEPTED
| input |
|---|
| 18558 38661 75914 |
| correct output |
|---|
| 924425479 |
| user output |
|---|
| 924425479 |
Test 32
Verdict: ACCEPTED
| input |
|---|
| 35543 34086 47960 |
| correct output |
|---|
| 210554536 |
| user output |
|---|
| 210554536 |
Test 33
Verdict: ACCEPTED
| input |
|---|
| 20101 32903 99080 |
| correct output |
|---|
| 88647511 |
| user output |
|---|
| 88647511 |
Test 34
Verdict: ACCEPTED
| input |
|---|
| 18028 1948 6831 |
| correct output |
|---|
| 631722506 |
| user output |
|---|
| 631722506 |
Test 35
Verdict: ACCEPTED
| input |
|---|
| 61218 12076 16908 |
| correct output |
|---|
| 820171450 |
| user output |
|---|
| 820171450 |
Test 36
Verdict: ACCEPTED
| input |
|---|
| 78139 13111 69284 |
| correct output |
|---|
| 904117059 |
| user output |
|---|
| 904117059 |
Test 37
Verdict: ACCEPTED
| input |
|---|
| 45455 2862 43952 |
| correct output |
|---|
| 430742811 |
| user output |
|---|
| 430742811 |
Test 38
Verdict: ACCEPTED
| input |
|---|
| 84538 61888 77158 |
| correct output |
|---|
| 294818599 |
| user output |
|---|
| 294818599 |
Test 39
Verdict: ACCEPTED
| input |
|---|
| 26937 59685 80971 |
| correct output |
|---|
| 680140546 |
| user output |
|---|
| 680140546 |
Test 40
Verdict: ACCEPTED
| input |
|---|
| 30632 9727 88573 |
| correct output |
|---|
| 877318826 |
| user output |
|---|
| 877318826 |
Test 41
Verdict: ACCEPTED
| input |
|---|
| 55737 66074 71002 |
| correct output |
|---|
| 123569267 |
| user output |
|---|
| 123569267 |
Test 42
Verdict: ACCEPTED
| input |
|---|
| 59351 587 51636 |
| correct output |
|---|
| 122513346 |
| user output |
|---|
| 122513346 |
Test 43
Verdict: ACCEPTED
| input |
|---|
| 8954 7866 51810 |
| correct output |
|---|
| 961929284 |
| user output |
|---|
| 961929284 |
Test 44
Verdict: ACCEPTED
| input |
|---|
| 61218 12076 16908 |
| correct output |
|---|
| 820171450 |
| user output |
|---|
| 820171450 |
Test 45
Verdict: ACCEPTED
| input |
|---|
| 9556 43003 92502 |
| correct output |
|---|
| 424034313 |
| user output |
|---|
| 424034313 |
Test 46
Verdict: ACCEPTED
| input |
|---|
| 20433 945 23474 |
| correct output |
|---|
| 794687216 |
| user output |
|---|
| 794687216 |
Test 47
Verdict: ACCEPTED
| input |
|---|
| 9941 45344 78340 |
| correct output |
|---|
| 875489658 |
| user output |
|---|
| 875489658 |
Test 48
Verdict: ACCEPTED
| input |
|---|
| 82532 68582 70655 |
| correct output |
|---|
| 238007640 |
| user output |
|---|
| 238007640 |
Test 49
Verdict: ACCEPTED
| input |
|---|
| 52729 37586 66259 |
| correct output |
|---|
| 93243919 |
| user output |
|---|
| 93243919 |
Test 50
Verdict: ACCEPTED
| input |
|---|
| 10475 17392 24871 |
| correct output |
|---|
| 977605482 |
| user output |
|---|
| 977605482 |
Test 51
Verdict: ACCEPTED
| input |
|---|
| 76232 88012 95143 |
| correct output |
|---|
| 871309467 |
| user output |
|---|
| 871309467 |
Test 52
Verdict: ACCEPTED
| input |
|---|
| 77184 58424 64500 |
| correct output |
|---|
| 693972156 |
| user output |
|---|
| 693972156 |
Test 53
Verdict: ACCEPTED
| input |
|---|
| 96888 47083 55295 |
| correct output |
|---|
| 406195062 |
| user output |
|---|
| 406195062 |
Test 54
Verdict: ACCEPTED
| input |
|---|
| 9556 43003 92502 |
| correct output |
|---|
| 424034313 |
| user output |
|---|
| 424034313 |
Test 55
Verdict: ACCEPTED
| input |
|---|
| 83891 47894 87748 |
| correct output |
|---|
| 686766192 |
| user output |
|---|
| 686766192 |
Test 56
Verdict: ACCEPTED
| input |
|---|
| 85080 21779 92819 |
| correct output |
|---|
| 114946782 |
| user output |
|---|
| 114946782 |
Test 57
Verdict: ACCEPTED
| input |
|---|
| 88235 6779 56603 |
| correct output |
|---|
| 70147249 |
| user output |
|---|
| 70147249 |
Test 58
Verdict: ACCEPTED
| input |
|---|
| 88858 66896 98375 |
| correct output |
|---|
| 601764178 |
| user output |
|---|
| 601764178 |
Test 59
Verdict: ACCEPTED
| input |
|---|
| 50586 8901 76084 |
| correct output |
|---|
| 881324074 |
| user output |
|---|
| 881324074 |
Test 60
Verdict: ACCEPTED
| input |
|---|
| 87594 26882 34225 |
| correct output |
|---|
| 42681251 |
| user output |
|---|
| 42681251 |
Test 61
Verdict: ACCEPTED
| input |
|---|
| 73130 30310 55103 |
| correct output |
|---|
| 843664756 |
| user output |
|---|
| 843664756 |
Test 62
Verdict: ACCEPTED
| input |
|---|
| 63584 31874 92876 |
| correct output |
|---|
| 437812641 |
| user output |
|---|
| 437812641 |
Test 63
Verdict: ACCEPTED
| input |
|---|
| 88714 2531 74051 |
| correct output |
|---|
| 603847190 |
| user output |
|---|
| 603847190 |
