QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#468640 | #3265. 组合数问题 | little_sun | 100 ✓ | 1ms | 3996kb | C++14 | 1.0kb | 2024-07-08 21:56:14 | 2024-07-08 21:56:14 |
Judging History
answer
#include <bits/stdc++.h>
#define R register
#define ll long long
#define vec std::vector
#define sum(a, b, mod) (((a) + (b)) % mod)
#define meow(cat...) fprintf(stderr, cat)
int n, r, p, k;
inline int read()
{
int x = 0;
char ch = getchar();
while(ch > '9' || ch < '0')
ch = getchar();
while(ch <= '9' && ch >= '0')
x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
return x;
}
vec<int> operator*(const vec<int>&l, const vec<int>&r)
{
vec<int> res(k);
for(int i = 0; i < k; i++)
for(int j = 0; j < k; j++)
res[(i + j) % k] = sum(res[(i + j) % k], 1ll * l[i] * r[j], p);
return res;
}
signed main()
{
n = read(), p = read(), k = read(), r = read();
vec<int> a(k), ans(k);
if(k == 1) a[0] = 2 % p, ans[0] = 1;
else a[0] = a[1] = 1, ans[0] = 1;
auto num = 1ll * n * k;
while(num > 0)
{
if(num & 1)
ans = ans * a;
a = a * a, num >>= 1;
}
printf("%d\n", ans[r]);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 5
Accepted
time: 0ms
memory: 3728kb
input:
14 861021533 17 8
output:
109194683
result:
ok single line: '109194683'
Test #2:
score: 5
Accepted
time: 0ms
memory: 3772kb
input:
14 734575201 8 4
output:
136629647
result:
ok single line: '136629647'
Test #3:
score: 5
Accepted
time: 0ms
memory: 3996kb
input:
6 572660339 1 0
output:
64
result:
ok single line: '64'
Test #4:
score: 5
Accepted
time: 0ms
memory: 3992kb
input:
17 141616127 10 5
output:
87241654
result:
ok single line: '87241654'
Test #5:
score: 5
Accepted
time: 0ms
memory: 3780kb
input:
13 889947181 16 12
output:
100910764
result:
ok single line: '100910764'
Test #6:
score: 5
Accepted
time: 0ms
memory: 3708kb
input:
25 752392757 4 3
output:
424857239
result:
ok single line: '424857239'
Test #7:
score: 5
Accepted
time: 1ms
memory: 3796kb
input:
553999928 2 45 26
output:
0
result:
ok single line: '0'
Test #8:
score: 5
Accepted
time: 0ms
memory: 3708kb
input:
843993365 943947738 1 0
output:
470996456
result:
ok single line: '470996456'
Test #9:
score: 5
Accepted
time: 0ms
memory: 3960kb
input:
855636225 749698583 2 0
output:
545006096
result:
ok single line: '545006096'
Test #10:
score: 5
Accepted
time: 0ms
memory: 3768kb
input:
969348092 956297536 2 1
output:
679600512
result:
ok single line: '679600512'
Test #11:
score: 5
Accepted
time: 1ms
memory: 3784kb
input:
650 660260759 45 16
output:
173373801
result:
ok single line: '173373801'
Test #12:
score: 5
Accepted
time: 1ms
memory: 3796kb
input:
598 221558443 41 40
output:
199993457
result:
ok single line: '199993457'
Test #13:
score: 5
Accepted
time: 1ms
memory: 3732kb
input:
863 269455309 42 29
output:
172561433
result:
ok single line: '172561433'
Test #14:
score: 5
Accepted
time: 0ms
memory: 3700kb
input:
28627 269441503 34 24
output:
180377871
result:
ok single line: '180377871'
Test #15:
score: 5
Accepted
time: 0ms
memory: 3708kb
input:
36656 67854541 25 6
output:
2429047
result:
ok single line: '2429047'
Test #16:
score: 5
Accepted
time: 0ms
memory: 3792kb
input:
27459 172755593 27 20
output:
73460042
result:
ok single line: '73460042'
Test #17:
score: 5
Accepted
time: 1ms
memory: 3992kb
input:
743268139 705178739 33 19
output:
311756018
result:
ok single line: '311756018'
Test #18:
score: 5
Accepted
time: 1ms
memory: 3788kb
input:
934248626 620145553 43 16
output:
121876656
result:
ok single line: '121876656'
Test #19:
score: 5
Accepted
time: 1ms
memory: 3964kb
input:
619290070 907487131 38 19
output:
213941765
result:
ok single line: '213941765'
Test #20:
score: 5
Accepted
time: 1ms
memory: 3700kb
input:
507684930 711845893 28 24
output:
419183631
result:
ok single line: '419183631'
Extra Test:
score: 0
Extra Test Passed