#include <cstdio>
#include <tuple>
namespace QuikIO{
const int size = 1 << 25;
char out[size],*p3 = out;
#define putchar(c) (*p3++ = c)
struct Flush{~Flush(){fwrite(out,1,p3 - out,stdout);}}_;
void write(int x){
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
void print(int x,char end = '\n'){
write(x);
putchar(end);
}
}using QuikIO::print;
std::tuple <int,int> exgcd(int a,int b){
if (b == 0) return {1,0};
auto [x0,y0] = exgcd(b,a % b);
return {y0,x0 - a / b * y0};
}
int inv(int a,int p){return (std::get<0>(exgcd(a,p)) + p) % p;}
int main(){
int n,p;
scanf("%d%d",&n,&p);
for (int i = 1;i <= n;i++) print(inv(i,p));
return 0;
}
如此帖涉嫌泄漏题解,请删除