zoukankan      html  css  js  c++  java
  • 数论二次总结

    大模板在此。(可能有错)。

    LL fast(LL a,LL b,LL c){LL ans=1;for(;b;a=a*a%c,b>>=1)if(b&1)ans=ans*a%c;return ans;}
    LL mul(LL a,LL b,LL c){return ((a*b-((LL)((long double)a/c*b+1e-8))*c)+c)%c;}
    void exgcd(LL a,LL b,LL& d,LL& x,LL& y){
    	if(!b)return (void)(d=a,x=1,y=0);
    	LL t=x;x=y;y=t-a/b*x;
    }
    LL inv(LL a,LL p){
    	LL x,y,d;
    	exgcd(a,p,d,x,y);
    	return d>1?-1:(x%p+p)%p;
    }
    LL china(LL* m,LL* a,int n){//exgcd合并方程
    	LL M=m[1],A=a[1],b,k,y,d;
    	up(i,2,n){
    		b=a[i]-A;
    		exgcd(M,m[i],d,k,y);
    		if(b%d)return -1;
    		k*=b/d;
    		A+=k*M;
    		M=M*m[i]/d;
    		A=(A%+M)%M;
    	}
    	return A;
    }
    LL gcd(LL a,LL b){return !b?a:gcd(b,a%b);}
    bool rabin_miller(LL a,LL p){
    	if(!(p&1)||p<=1)return 0;
    	LL d=p-1,m;
    	if(!(d&1))d>>=1;
    	m=fast(a,d,p);
    	if(m==1)return 1;
    	for(;d<p;m=m*m%p,d<<=1)if(m==p-1)return 1;
    	return 0;
    }
    bool isprime(LL p){
    	static int prime[10]={2,3,5,7,11,13,17,19,23,29};
    	up(i,0,9){
    		if(prime[i]==p)return 1;
    		if(!rabin_miller(prime[i],p))return 0;
    	}
    	return 1;
    }
    LL fac[maxn],cnt=0;
    void get(LL x){
    	if(isprime(x)){fac[++cnt]=x;return;}
    	int c=3;
    	while(true){
    		LL x1=1,x2=1,k=2,i=1,d;
    		while(true){
    			x1=((x1*x1%mod)+c)%mod;
    			d=gcd(abs(x1-x2),x);
    			if(d>1){get(d),get(x/d);return;}
    			if(x1==x2)break;
    			if(++i==k)k<<=1,x2=x1;
    		}
    		c++;
    	}
    }
    LL log_mod(LL a,LL b,LL mod){
    	LL ret=1;
    	up(i,0,50){
    		if(ret==b)return i;
    		ret=ret*a%mod;
    	}
    	LL g=0,d,D=1,tmp;
    	while((d=gcd(a,mod))!=1){
    		if(b%d)return -1;
    		mod/=d,b/=d;
    		g++;b/=D=D*(a/d)%mod;
    	}
    	map<LL,LL> t;
    	LL m=(LL)sqrt(mod+1.0),v,e;
    	v=inv(fast(a,m,mod),mod);
    	t[1]=0;
    	up(i,0,m-1){
    		e=e*a%mod;
    		if(!t.count(e))t[e]=i;
    	}
    	up(i,0,m-1){
    		if(t.count(b))return i*m+t[b]+g;
    		b=b*v%mod;
    	}
    	return -1;
    }
    

      

  • 相关阅读:
    ant build打包
    在JAVA中如何获取当前源文件名以及代码的行号
    react以组件为中心的代码分割和懒加载
    java中针对 try和finally一些总结
    JS强制关闭浏览器页签并且不提示关闭信息
    由[].slice.call()引发的思考
    JS类型判断
    nginx的location配置
    DBCP连接池
    java/Servlet
  • 原文地址:https://www.cnblogs.com/chadinblog/p/6406846.html
Copyright © 2011-2022 走看看