6238 | 2023-11-08 12:44:30 | Error42 | Tömbök előállítása | cpp17 | Futási hiba 35/100 | 1.23s | 521888 KiB |
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
template <ll M>
struct modular {
ll val;
// n >= 0
modular(const ll n) {
if (n < M)
val = n;
else if (n < 2 * M)
val = n - M;
else
val = n % M;
}
[[nodiscard]] modular operator +(const modular& rhs) const {
return val + rhs.val;
}
[[nodiscard]] modular operator -(const modular& rhs) const {
return val + M - rhs.val;
}
[[nodiscard]] modular operator *(const modular& rhs) const {
return val * rhs.val;
}
// p >= 0
[[nodiscard]] modular pow(const ll& p) const {
if (p == 0)
return 1;
if (p % 2 == 0)
return (*this * *this).pow(p / 2);
else
return *this * pow(p - 1);
}
[[nodiscard]] modular inv() const {
return pow(M - 2);
}
[[nodiscard]] modular operator /(const modular& rhs) const {
return *this * rhs.inv();
}
modular& operator +=(const modular& rhs) {
return *this = *this + rhs;
}
modular& operator -=(const modular& rhs) {
return *this = *this - rhs;
}
modular& operator *=(const modular& rhs) {
return *this = *this * rhs;
}
modular& operator /=(const modular& rhs) {
return *this = *this / rhs;
}
explicit operator ll() const {
return val;
}
};
template <ll M>
ostream& operator<<(ostream& os, const modular<M>& modular) {
cout << modular.val;
return os;
}
using mod = modular<1'000'000'007>;
ll n, m, l, r, k;
vector<mod> identity;
vector<mod> combine(vector<mod> const& a, vector<mod> const& b) {
vector<mod> ret(m, 0);
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
int k = (i + j) % m;
ret[k] += a[i] * b[j];
}
}
return ret;
}
vector<mod> calc(int const n) {
if (n == 1)
return identity;
else if (n % 2 == 1)
return combine(calc(n - 1), identity);
else {
auto const half = calc(n / 2);
return combine(half, half);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m >> l >> r >> k;
identity.assign(m, 0);
for (int i = 0; i < m; i++) {
identity[i] += (r - i + m) / m;
identity[i] -= (l - 1 - i + m) / m;
}
auto const ans = calc(n);
cout << ans[k] << "\n";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 1828 KiB | ||||
2 | Elfogadva | 3ms | 2052 KiB | ||||
3 | Elfogadva | 3ms | 2272 KiB | ||||
subtask2 | 10/10 | ||||||
4 | Elfogadva | 3ms | 2452 KiB | ||||
5 | Elfogadva | 3ms | 2816 KiB | ||||
6 | Elfogadva | 3ms | 2868 KiB | ||||
subtask3 | 10/10 | ||||||
7 | Elfogadva | 2ms | 2952 KiB | ||||
8 | Elfogadva | 3ms | 3076 KiB | ||||
9 | Elfogadva | 2ms | 3160 KiB | ||||
10 | Elfogadva | 3ms | 3296 KiB | ||||
11 | Elfogadva | 2ms | 3384 KiB | ||||
12 | Elfogadva | 2ms | 3388 KiB | ||||
13 | Elfogadva | 3ms | 3572 KiB | ||||
subtask4 | 7/7 | ||||||
14 | Elfogadva | 3ms | 3776 KiB | ||||
15 | Elfogadva | 3ms | 3904 KiB | ||||
16 | Elfogadva | 3ms | 4120 KiB | ||||
17 | Elfogadva | 3ms | 4336 KiB | ||||
18 | Elfogadva | 2ms | 4432 KiB | ||||
19 | Elfogadva | 2ms | 4440 KiB | ||||
20 | Elfogadva | 3ms | 4656 KiB | ||||
subtask5 | 8/8 | ||||||
21 | Elfogadva | 79ms | 4760 KiB | ||||
22 | Elfogadva | 39ms | 4968 KiB | ||||
23 | Elfogadva | 50ms | 5064 KiB | ||||
24 | Elfogadva | 32ms | 4904 KiB | ||||
25 | Elfogadva | 17ms | 4908 KiB | ||||
26 | Elfogadva | 9ms | 4808 KiB | ||||
27 | Elfogadva | 57ms | 5092 KiB | ||||
28 | Elfogadva | 12ms | 5076 KiB | ||||
29 | Elfogadva | 79ms | 5092 KiB | ||||
30 | Elfogadva | 79ms | 5116 KiB | ||||
subtask6 | 0/25 | ||||||
31 | Futási hiba | 168ms | 521888 KiB | ||||
32 | Futási hiba | 166ms | 521864 KiB | ||||
33 | Hibás válasz | 6ms | 4964 KiB | ||||
34 | Hibás válasz | 6ms | 5184 KiB | ||||
35 | Elfogadva | 6ms | 5196 KiB | ||||
36 | Hibás válasz | 7ms | 5200 KiB | ||||
37 | Futási hiba | 165ms | 521628 KiB | ||||
38 | Futási hiba | 209ms | 521604 KiB | ||||
39 | Hibás válasz | 9ms | 5216 KiB | ||||
40 | Hibás válasz | 8ms | 5316 KiB | ||||
subtask7 | 0/40 | ||||||
41 | Futási hiba | 209ms | 521580 KiB | ||||
42 | Futási hiba | 167ms | 521548 KiB | ||||
43 | Futási hiba | 211ms | 521524 KiB | ||||
44 | Hibás válasz | 1.23s | 5300 KiB | ||||
45 | Futási hiba | 167ms | 521564 KiB | ||||
46 | Hibás válasz | 501ms | 5272 KiB | ||||
47 | Hibás válasz | 773ms | 5336 KiB | ||||
48 | Hibás válasz | 10ms | 5248 KiB | ||||
49 | Hibás válasz | 796ms | 5312 KiB | ||||
50 | Futási hiba | 209ms | 521532 KiB |