QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#506671#6168. 异构序列码性态问题neilliu0 977ms29812kbC++141.5kb2024-08-05 20:33:382024-08-05 20:33:39

Judging History

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

  • [2024-08-05 20:33:39]
  • 评测
  • 测评结果:0
  • 用时:977ms
  • 内存:29812kb
  • [2024-08-05 20:33:38]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
long long ksm(long long a,long long b,long long p){
    long long ans = 1;
    for(; b; b >>= 1){
        if(b & 1) ans = ans * a % p;
        a = a * a % p;
    }
    return ans;
}
long long fac[10000005],infac[10000005],Ca[5000005];
void init(long long n,long long p){
    fac[0] = infac[0] = fac[1] = infac[1] = 1;
    for(int i = 2; i <= n; i++) fac[i] = fac[i-1] * i % p;
    infac[n] = ksm(fac[n],p-2,p);
    for(int i = n-1; i >= 1; i--) infac[i] = infac[i+1] * (i+1) % p;
}
long long C(int x,int y,long long p){
    return fac[x] * infac[y] % p * infac[x-y] % p;
}
void Catalan(int n,long long p){
    Ca[0] = Ca[1] = 1;
    for(int i = 2; i <= n; i++) Ca[i] = Ca[i-1] * (4 * i - 2) * ksm((i+1),p-2,p) % p;
}
int main()
{
    int n; long long p;
    while(cin >> n >> p){
        if(n <= 3){
            printf("0\n");
            continue;
        }
        init(2*n,p);
        Catalan(n,p);
        long long ans = 0;
        n = n-1;
        long long mici = 1;
        for(int i = 0; i <= n; i++){
            long long sum = 1;
            sum = sum * mici % p; mici = mici + mici; if(mici >= p) mici -= p;
            sum = sum * C(n+i,n-i,p) % p;
            sum = sum * (i == 0 ? 1 : Ca[i]) % p;
            if((n-i) & 1) sum = -sum;
            ans = ans + sum;
            if(ans < 0) ans = ans + p;
            if(ans >= p) ans = ans - p;
        }
        printf("%lld\n",(fac[n+1] - ans - ans + p + p) % p);
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 0
Wrong Answer
time: 6ms
memory: 7864kb

input:

1329 281979259
3946 347158051
3102 613279651
4193 175275013
494 674092373
549 240448331
3924 588857561
1719 782159639
1781 270936499
672 589936439

output:

252169204
75669827
387986930
87858537
296408196
238282620
199433025
330355435
50031690
385421647

result:

wrong answer 1st numbers differ - expected: '9022243', found: '252169204'

Test #2:

score: 0
Wrong Answer
time: 7ms
memory: 7928kb

input:

2013 239960621
2839 377547413
4864 996482101
3196 204395311
1568 653611141
753 104807119
3006 755688737
3047 697114861
2943 384316589
2413 512454407

output:

221520024
35533920
492788255
111565542
58392987
18540465
532234709
691387826
95345781
173589803

result:

wrong answer 1st numbers differ - expected: '127514501', found: '221520024'

Test #3:

score: 0
Wrong Answer
time: 7ms
memory: 8008kb

input:

4542 497374921
4375 144420547
3310 175379389
1159 776452463
642 401409289
1214 754051891
1956 962928761
3925 282058753
2664 215149997
2050 912416861

output:

223736284
55139856
50769014
325595077
294309819
677267317
847513151
119684184
8204254
19151897

result:

wrong answer 1st numbers differ - expected: '234466993', found: '223736284'

Test #4:

score: 0
Wrong Answer
time: 8ms
memory: 7884kb

input:

4808 349909687
4602 991037059
108 14516431
3384 974151743
1250 726146471
4891 585626857
3617 211451333
358 425997931
2891 654329051
4814 64701121

output:

46497655
74958131
167634
185756989
43242643
17440265
66491786
41358104
445384555
45029181

result:

wrong answer 1st numbers differ - expected: '334429486', found: '46497655'

Test #5:

score: 0
Wrong Answer
time: 3ms
memory: 7880kb

input:

1107 524640323
1847 933584471
3406 582135349
4007 51397727
80 570372863
4186 193850947
1773 505708747
59 753490921
4244 207441401
723 3432577

output:

384429036
558322415
44969012
4623967
224531090
8718485
474323098
498984872
135901756
2470622

result:

wrong answer 1st numbers differ - expected: '28404629', found: '384429036'

Test #6:

score: 0
Wrong Answer
time: 717ms
memory: 24236kb

input:

350598 149719567
5656 639718861
182032 562484129
321578 733607449
396666 977259137
289217 738297893
94787 357806747
130763 912856261
129615 332700631
439091 653900939
228198 805737671
421386 35411809

output:

1859533
445896794
460001015
401607437
394695980
229033214
192134021
153394355
169431953
92036389
467742948
30494128

result:

wrong answer 1st numbers differ - expected: '17579808', found: '1859533'

Test #7:

score: 0
Wrong Answer
time: 977ms
memory: 29812kb

input:

71980 730430429
365591 519176123
421874 939796883
442008 891121537
196686 57507407
481211 220812971
351047 410650543
262764 313392899
434798 192402149
113530 421210637
359403 379486343
396967 813975307
193616 995122811

output:

127342433
129946873
559104184
270902004
2099856
129455414
228161269
201394756
173843625
78731278
145786275
446972931
43448846

result:

wrong answer 1st numbers differ - expected: '327860411', found: '127342433'

Test #8:

score: 0
Time Limit Exceeded

input:

412065 473565137
427460 278321429
481215 341626709
248825 235725317
391371 550178417
166694 541821383
3035 184388593
166130 370451243
342592 79808159
98863 640391243
416610 96090131
479715 456938333
407065 630349243
289928 807773149
486842 415008521
300760 618573047

output:

112827183
270868680
67587398
110746218
236559293
20757224
32699598
210735927
23275454
376707120
16726288
4912702
572618503
254929306

result:


Test #9:

score: 0
Time Limit Exceeded

input:

401210 376894061
112020 976190981
76624 418721741
308217 29130763
275157 939661747
35829 250363831
178538 424627327
456973 351281803
88075 992733541
281595 311233067
104622 151994753
271593 41245261
319132 947462657
186811 961154149
227249 86441119
165977 701025443
471204 999330173
296567 685415303
...

output:

271139989
867328706
212499825
2335403
747109010
85694081
370590295
322938163
644990079
237295235
146440991
4384536
668774094
701691939
39186531
121134170
110040595
48761414
277906346

result:


Test #10:

score: 0
Time Limit Exceeded

input:

372965 157601299
239698 272457617
40399 596646311
315339 562161443
166279 292784099
224605 629707601
14534 7015139
478528 718703087
129027 957763397
44039 880925107
420271 933815867
323410 164444393
160117 572839451
344095 28487981
473223 648555881
469070 150428897
447149 993828707
214989 982422577
...

output:

61568588
60940830
532889631
7126015
133824735
551976956
4617668
690007302
612400161
394382727
810602690
16604319
218727406
16222274
446157260
50408014

result: