[洛谷3811]【模板】乘法逆元
思路:
线性推逆元模板。
核心代码:inv[i]=(long long)(p-p/i)*inv[p%i]%p;
注意中间结果要开long long,否则会上溢,只有32分。
1 #include<cstdio> 2 #include<cctype> 3 inline int getint() { 4 char ch; 5 while(!isdigit(ch=getchar())); 6 int x=ch^'0'; 7 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); 8 return x; 9 } 10 int main() { 11 int n=getint(),p=getint(); 12 int inv[n+1]; 13 inv[1]=1; 14 printf("%d\n",inv[1]); 15 for(int i=2;i<=n;i++) { 16 inv[i]=(long long)(p-p/i)*inv[p%i]%p; 17 printf("%d\n",inv[i]); 18 } 19 return 0; 20 }