$n!$的逆元可以一次快速幂求出吧!
最后从大到小用上面综上里的公式依次求出逆元,别忘了$\%p$。
代码如下:
```cpp
#include <bits/stdc++.h>
using namespace std;
long long n;
long long p;
long long c[3000006];
long long fast(long long x,long long y)
{
long long an=1;
while(y)
{
if(y&1)
an=(an*x)%p;
x=(x*x)%p;
y>>=1;
}
return an;
}
long long ans[3000006];
int main()
{
scanf("%lld%lld",&n,&p);
c[0]=1;
for(long long i=1;i<=n;i++)
c[i]=(c[i-1]*i)%p;
long long last=fast(c[n],p-2);
long long k;
for(int i=n;i>=1;i--)
{
k=(last*i)%p;
ans[i]=(last*c[i-1])%p;
last=k;
}
for(int i=1;i<=n;i++)
printf("%lld\n",ans[i]);
return 0;
}
```