zoukankan      html  css  js  c++  java
  • P4777 【模板】扩展中国剩余定理(EXCRT)

    浪费我好多时间因为没找着一篇好的教程嘤嘤嘤

    推荐一位大神的博客(是真的厉害):dalao

    以下是c++版本的程序

    #include <iostream>
    #include <cstdio>
    #define ll __int128 
    using namespace std;
    
    ll C1,C2,M1,M2,C[1000002],M[1000002],x,y,n,t;
    
    ll gcd(ll x,ll y){
    	return y==0?x:gcd(y,x%y);
    }
    ll exgcd(ll a,ll b,ll &x,ll &y){
    	if(b==0){
    		x=1,y=0;
    		return a;
    	}
    	int r=exgcd(b,a%b,x,y);
    	int tmp;
    	tmp=x,x=y,y=tmp-(a/b)*y;
    	return r;
    }
    
    ll inv(ll a,ll b){
    	ll r=exgcd(a,b,x,y);
    	return (x%b+b)%b;
    }
    
    int main(){
    	scanf("%lld",&n);
    	for(ll i=1;i<=n;i++)
    		scanf("%lld%lld",&M[i],&C[i]);
    	for(ll i=2;i<=n;i++){
    		C1=C[i-1],C2=C[i],M1=M[i-1],M2=M[i];
    		t=gcd(M1,M2);
    		M[i]=(M1*M2)/t;
    		C[i]=(inv(M1/t,M2/t)*(C2-C1)/t)%(M2/t)*M1+C1;
    		C[i]=(C[i]%M[i]+M[i])%M[i];
    	}
    	printf("%lld",C[n]);
    	return 0;
    }
    

      

  • 相关阅读:
    SQL Server Management Studio
    uiimage拉伸
    时间空间复杂度
    冒泡选择排序

    插入排序
    快速构建APP
    TTTAtibutedlabel
    Git命令
    适配
  • 原文地址:https://www.cnblogs.com/jindui/p/11190761.html
Copyright © 2011-2022 走看看