#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e6+5;
int n,p;
int jc[N]={1,0},jcny[N],ans[N]={0};
int ksm(int a,int k){
int res=1;
while(k){
if(k%2==1){
res=(res%p*a%p)%p;
}
a=(a%p*a%p)%p;
k>>=1;
}
return res%p;
}
signed main(){
scanf("%lld%lld",&n,&p);
for(int i=1;i<=n;i++){
jc[i]=(jc[i-1]*i)%p;
}
for(int i=n;i>=0;i--){
if(i==n){
jcny[i]=ksm(jc[i],p-2)%p;
}
else{
jcny[i]=(jcny[i+1]*(i+1))%p;
}
}
for(int i=1;i<=n;i++){
printf("%lld\n",(jcny[i]*jc[i-1])%p);
}
return 0;
}
上是蒟蒻的代码,都用的c++14交的,为什么一个过了,一个没过。
没开O2
开O2
怎么回事呢