delete pics to save space

This commit is contained in:
2023-08-03 09:22:52 +08:00
commit de60cd6ed4
1334 changed files with 66221 additions and 0 deletions

36
1.2606.cpp Normal file
View File

@ -0,0 +1,36 @@
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
const int maxn=1e6+7;
int n; LL p;
LL fac[maxn],fac_inv[maxn],inv[maxn];
LL f[maxn];
bool is_le[maxn]; int lsize[maxn];
inline LL C(int n,int m) { return (fac[n]*fac_inv[m]%p)*fac_inv[n-m]%p; }
LL lucas(int n,int m)
{
if(m>n) return 0;
if(m<p&&n<p) return C(n,m);
else return lucas(n/p,m/p)*C(n%p,m%p)%p;
}
int main()
{
#ifdef local
freopen("pro.in","r",stdin);
#endif
scanf("%d%lld",&n,&p);
fac[0]=1; for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i%p;
inv[1]=1; for(int i=2;i<=n;i++) inv[i]=(p-p/i)*inv[p%i]%p;
fac_inv[0]=1; for(int i=1;i<=n;i++) fac_inv[i]=fac_inv[i-1]*inv[i]%p;
is_le[2]=true; for(int i=3;i<=n;i++) is_le[i]=is_le[i>>1];
for(int i=2;i<=n;i++) lsize[i]=lsize[i-1]+is_le[i];
f[0]=f[1]=1;
for(int i=2;i<=n;i++)
{
LL x=lsize[i];
f[i]=(lucas(i-1,x)*f[x]%p)*f[i-x-1]%p;
}
printf("%lld\n",f[n]);
return 0;
}