比赛 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;
}