对于 20%的数据,满足 N≤10;
对于 40%的数据,满足 N≤18;
对于 70%的数据,满足 N≤550;
对于 100%的数据,满足 3≤N≤4200,P≤109
/**************************************************************
Problem: 1925
User: zhangenming
Language: C++
Result: Accepted
Time:480 ms
Memory:1444 kb
****************************************************************/
#include <bits/stdc++.h>
#define ll long long
#define inf 1e9+10
#define mod 10000
using namespace std;
inline int read(){
int x=0;int f=1;char ch=getchar();
while(!isdigit(ch)) {if(ch==‘-‘) f=-1;ch=getchar();}
while(isdigit(ch)) {x=x*10+ch-‘0‘;ch=getchar();}
return x*f;
}
const int MAXN=1e4+10;
ll f[2][MAXN],n,p;
int main(){
n=read();p=read();
int o=1;
f[o][1]=1;
for(int i=2;i<=n;i++){
o^=1;
for(int j=1;j<=i;j++){
f[o][j]=(f[o][j-1]+f[o^1][i-j])%p;
}
}
printf("%lld\n",f[o][n]*2%p);
return 0;
}
原文:https://www.cnblogs.com/something-for-nothing/p/9426880.html