其实扩欧是可以A的

P3811 【模板】模意义下的乘法逆元

完全不用那么多优化23333 ```cpp #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,mod; inline int read() { char c=getchar();int flag=1,x=0; while(c<'0'||c>'9') {if(c=='-') flag=-1;c=getchar();} while(c>='0'&&c<='9') x=x*10+c-48,c=getchar(); return x*flag; } int x,y; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int exgcd(int a,int b,int &x,int &y) { if(b==0) { x=1,y=0; return a; } int r=exgcd(b,a%b,x,y); int tmp=x;x=y;y=tmp-(a/b)*y; return r; } int main() { n=read(),mod=read(); for(int i=1;i<=n;i++) { int g=exgcd(i,mod,x,y); while(x<0) x+=mod; printf("%d\n",x); } return 0; } @[DefFrancis](/space/show?uid=46750) ```
by attack @ 2017-10-25 19:21:05


加个register就可以A了 连读入优化都没有 800ms ```cpp #include <stdio.h> #include <iostream> using namespace std; void exgcd(int a,int b,int &x,int &y){ if(!b){ x = 1,y = 0; return; } exgcd(b,a%b,y,x); y-=x*(a/b); } int main(){ int n,p; scanf("%d%d",&n,&p); int x,y; for(register int i = 1;i<=n;i++){ exgcd(i,p,x,y); while(x<0) x+=p; printf("%d\n",x); } return 0; } ```
by TakaML @ 2017-11-09 08:54:48


读入优化是搞笑的吗233,输出优化倒是有点用
by W584102684 @ 2017-11-09 09:10:35


|