• 【模板】扩展中国剩余定理(EXCRT)


    Code: 

    #include <cstdio> 
    #include <algorithm>      
    #define N 100005   
    #define ll long long  
    #define ull unsigned long long 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;  
    int n;      
    ll arr[N],brr[N]; 
    ll mult(ll x,ll y,ll mod) 
    {
    	ll tmp=(long double)x/mod*y;   
    	return ((ull)x*y-(ull)tmp*mod+mod)%mod;  
    }
    ll qpow(ll base,ll k,ll mod) 
    {
    	ll tmp=1; 
    	for(;k;k>>=1,base=mult(base,base,mod)) if(k&1) tmp=mult(tmp,base,mod); 
    	return tmp;   
    } 
    ll exgcd(ll a,ll b,ll &x,ll &y) 
    {
    	if(!b) 
    	{
    		x=1,y=0; 
    		return a;     
    	}
    	ll gcd=exgcd(b,a%b,x,y),tmp=x;            
    	x=y,y=tmp-a/b*y;                    
    	return gcd;   
    }
    ll Excrt() 
    { 
    	int i,j; 
    	ll ans=brr[1],M=arr[1];  
    	for(i=2;i<=n;++i) 
    	{    
    		ll a=M,b=arr[i],x,y,c=brr[i]-ans,gcd;
    		gcd=exgcd(a,b,x,y),b=abs(b/gcd);
    		x=mult(x,c/gcd,b);                 
    		ans+=M*x;
    		M*=arr[i]/gcd;                                      
    		ans=(ans%M+M)%M;         
    	}
    	return ans;
    }
    int main() 
    { 
    	int i,j;  
    	// setIO("input"); 
    	scanf("%d",&n);  
    	for(i=1;i<=n;++i) scanf("%lld%lld",&arr[i],&brr[i]);  
    	printf("%lld
    ",Excrt()); 
    	return 0; 
    }
    

      

  • 相关阅读:
    mysql备份与还原
    mysql基本操作
    mysql权限管理
    linux下mysql-5.5.15安装详细步骤
    mongo长连接
    css rem计算
    yii2使用小知识(连续补充)
    自动化运维工具ansible部署以及使用
    测试docker不同主机间容器互相访问
    redis慢查询日志
  • 原文地址:https://www.cnblogs.com/guangheli/p/9856366.html
Copyright © 2020-2023  润新知