QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#506666#6168. 异构序列码性态问题zlt100 ✓524ms19416kbC++141.4kb2024-08-05 20:32:382024-08-05 20:32:39

Judging History

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

  • [2024-08-05 20:32:39]
  • 评测
  • 测评结果:100
  • 用时:524ms
  • 内存:19416kb
  • [2024-08-05 20:32:38]
  • 提交

answer

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 1000100;

ll n, mod, fac[maxn], ifac[maxn];

inline ll qpow(ll b, ll p) {
	ll res = 1;
	while (p) {
		if (p & 1) {
			res = res * b % mod;
		}
		b = b * b % mod;
		p >>= 1;
	}
	return res;
}

inline ll C(ll n, ll m) {
	if (n < m || n < 0 || m < 0) {
		return 0;
	} else {
		return fac[n] * ifac[m] % mod * ifac[n - m] % mod;
	}
}

inline ll F(ll n) {
	return n ? (C(n * 2, n) - C(n * 2, n - 1) + mod) % mod : 1;
}

void solve() {
	if (n == 1) {
		puts("0");
		return;
	}
	fac[0] = 1;
	for (int i = 1; i <= n * 2; ++i) {
		fac[i] = fac[i - 1] * i % mod;
	}
	ifac[n * 2] = qpow(fac[n * 2], mod - 2);
	for (int i = n * 2 - 1; ~i; --i) {
		ifac[i] = ifac[i + 1] * (i + 1) % mod;
	}
	--n;
	ll ans = 0, p = 1;
	for (int i = 0; i <= n; ++i, p = (p + p < mod ? p + p : p + p - mod)) {
		ans = (ans + p * (((n - i) & 1) ? mod - 1 : 1) % mod * C(n + i, n - i) % mod * F(i)) % mod;
	}
	ans = (fac[n + 1] - ans * 2 % mod + mod) % mod;
	printf("%lld\n", ans);
}

int main() {
	while (scanf("%lld%lld", &n, &mod) == 2) {
		solve();
	}
	return 0;
}

详细


Pretests


Final Tests

Test #1:

score: 10
Accepted
time: 2ms
memory: 5908kb

input:

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

output:

9022243
90375289
181500274
69392605
94572085
183988942
242547795
400947287
129450662
237048756

result:

ok 10 numbers

Test #2:

score: 10
Accepted
time: 2ms
memory: 5936kb

input:

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

output:

127514501
170181578
992038090
73815433
61816960
45154402
745032291
462320547
174525842
366107086

result:

ok 10 numbers

Test #3:

score: 10
Accepted
time: 0ms
memory: 6060kb

input:

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

output:

234466993
4538739
59390501
366898284
163934721
171961354
863425261
138782415
83003435
201847067

result:

ok 10 numbers

Test #4:

score: 10
Accepted
time: 2ms
memory: 6004kb

input:

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

output:

334429486
723833033
167634
14788268
311835630
440281445
47163985
14567537
564093849
44526802

result:

ok 10 numbers

Test #5:

score: 10
Accepted
time: 0ms
memory: 6016kb

input:

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

output:

28404629
25931058
291914063
14907567
428621355
83313071
83042152
573879485
8114266
2470622

result:

ok 10 numbers

Test #6:

score: 10
Accepted
time: 162ms
memory: 18600kb

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:

17579808
155419450
560026227
468297123
243029728
56091759
321406225
561376710
276543939
567591315
340979931
27656146

result:

ok 12 numbers

Test #7:

score: 10
Accepted
time: 226ms
memory: 19212kb

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:

327860411
361140274
24095392
737625805
21913793
67391647
343303401
304857303
40063712
354132251
264987397
431078761
527126979

result:

ok 13 numbers

Test #8:

score: 10
Accepted
time: 278ms
memory: 19320kb

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:

227856800
239201498
95049640
48786767
39159769
241480844
131425842
156263612
71199342
354783592
20708452
29520842
599940124
123311805
259947114
58026841

result:

ok 16 numbers

Test #9:

score: 10
Accepted
time: 518ms
memory: 19304kb

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:

137731023
920811362
295340379
23946348
428778019
85748992
320995144
324249235
760781155
145998919
25642127
17286799
430204104
934136712
69246960
648492889
599264840
133362338
70276834
584459206
12202017
429688693
567850480
350485324
7803467
311883495
28708382
493452085
122150415
9248073
114411382
51...

result:

ok 36 numbers

Test #10:

score: 10
Accepted
time: 524ms
memory: 19416kb

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:

109121987
262715175
356621013
297089637
223288225
339047279
4617668
5264280
662373976
718326466
441473337
164343771
160326216
21951599
445550765
87469418
190780668
684891016
3664088
52624980
563295409
93465252
79017843
109845265
164802142
19403970
618043168
10298288
4851762
124114770
340048759
36515...

result:

ok 40 numbers