QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#506671 | #6168. 异构序列码性态问题 | neilliu | 0 | 977ms | 29812kb | C++14 | 1.5kb | 2024-08-05 20:33:38 | 2024-08-05 20:33:39 |
Judging History
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