QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#819843 | #7258. Random Walk | BreakPlus | AC ✓ | 70ms | 199200kb | C++14 | 1.3kb | 2024-12-18 17:39:37 | 2024-12-18 17:39:38 |
Judging History
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"