| 比赛 |
26暑假集训模拟赛1 |
评测结果 |
WAWWWWWWWW |
| 题目名称 |
圆 |
最终得分 |
10 |
| 用户昵称 |
梦那边的美好CE |
运行时间 |
0.291 s |
| 代码语言 |
C++ |
内存使用 |
3.69 MiB |
| 提交时间 |
2026-06-29 11:46:34 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
#define N (1145141)
#define mod (1000000007)
#define INF (LONG_LONG_MAX-50)
#define pb push_back
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define foa(ii,aa) for(auto ii:aa)
#define PII pair<int,int>
#define fi first
#define se second
#define mid ((l+r)>>1)
#define debug printf("HERE!\n")
using namespace std;
template<typename T>inline void read(T &FF){;
T RR=1;FF=0;char CH=getchar();
for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;
for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);
FF*=RR;
}
template<typename T>void write(T x){
if(x<0)putchar('-'),x*=-1;
if(x>9)write(x/10);
putchar(x%10+48);
}
int n,P;
int a[555];
bool check(){
fo(i,1,n-1){
int now=a[i],cnt=0;
fo(j,i+1,n){
if(a[j]<now){
cnt++;
now=a[j];
}
if(cnt>=3)return 0;
}
}
return 1;
}
int modpow(int x,int p){
x%=P;
int z=1;
while(p){
if(p&1)z=z*x%P;
x=x*x%P;
p>>=1;
}
return z;
}
signed main(){
freopen("great.in","r",stdin);freopen("great.out","w",stdout);
read(n);read(P);
if(n>10){
int jc=1;
fo(i,1,n)jc*=i,jc%=P;
int jj=jc;
jc*=(n-1)*(n-2)*(n-3);
jc%=P;
jc=modpow(jc%P,P-2);
jj-=jc;
jj=(jj+P)%P;
write(jj);
return 0;
}
fo(i,1,n)a[i]=i;
if(n<3){
write(0);
return 0;
}
int ans=1;
while(next_permutation(a+1,a+n+1)){
if(check())ans++;
ans%=P;
}
ans%=P;
write(ans);
return 0;
}