This commit is contained in:
1 parent
c89b0d349f
commit
8c1dfb5d0c
2 files changed
+84
No files matched your search
@@ -0,0 +1,36 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
long long n, p;
|
||||
long long mul[3000005];
|
||||
long long revs[3000005];
|
||||
long long rev[3000005];
|
||||
long long qpow(long long a, long long b) {
|
||||
a %= p;
|
||||
long long res = 1;
|
||||
while(b) {
|
||||
if(b & 1) {
|
||||
res = (res * a) % p;
|
||||
}
|
||||
a = (a * a) % p;
|
||||
b >>= 1;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
int main() {
|
||||
scanf("%lld%lld", &n, &p);
|
||||
mul[0] = 1;
|
||||
for(int i = 1; i <= n; ++i) {
|
||||
mul[i] = (mul[i - 1] * i) % p;
|
||||
}
|
||||
revs[n] = qpow(mul[n], p - 2);
|
||||
for(int i = n - 1; i >= 1; --i) {
|
||||
revs[i] = ((i + 1) * revs[i + 1]) % p;
|
||||
}
|
||||
for(int i = 1; i <= n; ++i) {
|
||||
rev[i] = (mul[i - 1] * revs[i]) % p;
|
||||
}
|
||||
for(int i = 1; i <= n; ++i) {
|
||||
printf("%lld\n", rev[i]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user