QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#468640#3265. 组合数问题little_sun100 ✓1ms3996kbC++141.0kb2024-07-08 21:56:142024-07-08 21:56:14

Judging History

你现在查看的是最新测评结果

  • [2024-07-08 21:56:14]
  • 评测
  • 测评结果:100
  • 用时:1ms
  • 内存:3996kb
  • [2024-07-08 21:56:14]
  • 提交

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;
}

詳細信息

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