QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#819843#7258. Random WalkBreakPlusAC ✓70ms199200kbC++141.3kb2024-12-18 17:39:372024-12-18 17:39:38

Judging History

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

  • [2024-12-18 17:39:38]
  • 评测
  • 测评结果:AC
  • 用时:70ms
  • 内存:199200kb
  • [2024-12-18 17:39:37]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll> P;
#define fi first
#define se second
#define mkp make_pair
#define pb emplace_back
#define popcnt __builtin_popcountll

#define int long long
inline ll read(){
	ll x=0, f=1; char ch=getchar();
	while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
	while(ch>='0' && ch<='9') x=x*10+ch-'0', ch=getchar();
	return x*f;
}
int N, mod, C[5005][5005];
inline void addmod(int &x){ if(x >= mod) x -= mod; }
int dp[5005], pw[5005];
void procedure(){
	N=read(), mod=read();
	pw[0]=1;
	for(int i=1;i<=5000;i++) pw[i]=pw[i-1]*4ll%mod;
	for(int i=0;i<=5000;i++) C[i][0]=1;
	for(int i=1;i<=5000;i++)
		for(int j=1;j<=i;j++)
			addmod(C[i][j]=C[i-1][j]+C[i-1][j-1]);

	int ans = 1ll*(N+1)*pw[N]%mod;
	for(int i=2;i<=5000;i+=2){
		dp[i]=1ll*C[i][i/2]*C[i][i/2]%mod;
		for(int j=2;j<i;j+=2)
			dp[i]=(dp[i]+1ll*(mod-dp[j])*C[i-j][(i-j)/2]%mod*C[i-j][(i-j)/2])%mod;
		if(i<=N) ans = (ans + 1ll*(mod-dp[i])*(N-i+1)%mod*pw[N-i])%mod;
		// cout<<i<<" dp = "<<dp[i]<<endl;
	}
	printf("%lld\n", ans);
}
signed main(){
	#ifdef LOCAL
		assert(freopen("input.txt","r",stdin));
		assert(freopen("output.txt","w",stdout));
	#endif
	ll T=1;
	// math_init();
	// NTT::init();
	while(T--) procedure();
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 66ms
memory: 197864kb

input:

2 1000000007

output:

44

result:

ok 1 number(s): "44"

Test #2:

score: 0
Accepted
time: 64ms
memory: 199064kb

input:

2015 2000000000

output:

1892319232

result:

ok 1 number(s): "1892319232"

Test #3:

score: 0
Accepted
time: 63ms
memory: 197768kb

input:

1 1335279264

output:

8

result:

ok 1 number(s): "8"

Test #4:

score: 0
Accepted
time: 64ms
memory: 198756kb

input:

2 1849598327

output:

44

result:

ok 1 number(s): "44"

Test #5:

score: 0
Accepted
time: 58ms
memory: 197820kb

input:

3 1822889311

output:

224

result:

ok 1 number(s): "224"

Test #6:

score: 0
Accepted
time: 64ms
memory: 198588kb

input:

4 1446755913

output:

1068

result:

ok 1 number(s): "1068"

Test #7:

score: 0
Accepted
time: 64ms
memory: 198888kb

input:

5 1526239859

output:

4960

result:

ok 1 number(s): "4960"

Test #8:

score: 0
Accepted
time: 64ms
memory: 197852kb

input:

4995 1548830120

output:

950970144

result:

ok 1 number(s): "950970144"

Test #9:

score: 0
Accepted
time: 63ms
memory: 198300kb

input:

4996 1181424399

output:

777518421

result:

ok 1 number(s): "777518421"

Test #10:

score: 0
Accepted
time: 64ms
memory: 198292kb

input:

4997 1715477619

output:

1422350413

result:

ok 1 number(s): "1422350413"

Test #11:

score: 0
Accepted
time: 63ms
memory: 198556kb

input:

4998 1342858071

output:

1282046306

result:

ok 1 number(s): "1282046306"

Test #12:

score: 0
Accepted
time: 64ms
memory: 197984kb

input:

4999 1625711486

output:

685405600

result:

ok 1 number(s): "685405600"

Test #13:

score: 0
Accepted
time: 63ms
memory: 197732kb

input:

5000 1448565595

output:

244248863

result:

ok 1 number(s): "244248863"

Test #14:

score: 0
Accepted
time: 63ms
memory: 197780kb

input:

4325 1647639160

output:

152052616

result:

ok 1 number(s): "152052616"

Test #15:

score: 0
Accepted
time: 64ms
memory: 199096kb

input:

4784 1449656269

output:

62584332

result:

ok 1 number(s): "62584332"

Test #16:

score: 0
Accepted
time: 64ms
memory: 199160kb

input:

2156 1336869678

output:

794572014

result:

ok 1 number(s): "794572014"

Test #17:

score: 0
Accepted
time: 60ms
memory: 199200kb

input:

902 1061020590

output:

502050782

result:

ok 1 number(s): "502050782"

Test #18:

score: 0
Accepted
time: 70ms
memory: 198512kb

input:

3537 1816372580

output:

304447408

result:

ok 1 number(s): "304447408"

Test #19:

score: 0
Accepted
time: 63ms
memory: 198616kb

input:

739 1389312924

output:

82391136

result:

ok 1 number(s): "82391136"

Test #20:

score: 0
Accepted
time: 58ms
memory: 199060kb

input:

4211 1547865075

output:

988813357

result:

ok 1 number(s): "988813357"

Test #21:

score: 0
Accepted
time: 60ms
memory: 198788kb

input:

3506 1605997004

output:

805360668

result:

ok 1 number(s): "805360668"

Test #22:

score: 0
Accepted
time: 63ms
memory: 198192kb

input:

1568 1539239436

output:

1103237896

result:

ok 1 number(s): "1103237896"

Test #23:

score: 0
Accepted
time: 64ms
memory: 198612kb

input:

16 1650693494

output:

334199630

result:

ok 1 number(s): "334199630"