• 51nod1079中国剩余定理


    /**
     *中国剩余定理
     */
    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<stack>
    #include<cstdlib>
    #include<cctype>
    #include<cstring>
    #include<cmath>
    #define  LL __int64
    using namespace std;
    /**
     *gcd(a,b)=d;则存在x,y,使d=ax+by
     *extended_euclid(a,b)=ax+by
     */
    LL extended_euclid(LL a,LL b,LL &x,LL &y){//扩张欧几里的算法
        int d;
        if(b==0){
            x=1; y=0;
            return a;
        }
        d=extended_euclid(b,a%b,y,x);
        y=y-a/b*x;
        return d;
    }
    /**
     *x=b[i](modw[i]) o<i<len
     *w[i]>0,且w[]中任意两个数互质
     */
    LL chinese_remainder(int b[],int w[],int len){
        LL res,i,d,x,y,n,m;
        res=0; n=1;
        for(i=0;i<len;i++) n*=w[i];
        for(i=0;i<len;i++){
            m=n/w[i];
            extended_euclid(w[i],m,x,y);
            res=(res+y*m*b[i])%n;
        }
        return (n+res%n)%n;
    }
    
    int main()
    {
        int len,b[12],w[12];
        while(cin>>len){
            for(int i=0;i<len;i++){
                cin>>w[i]>>b[i];
            }
            cout<<chinese_remainder(b,w,len)<<endl;
    
        }
        return 0;
    }
  • 相关阅读:
    fopen和open的区别
    vc代码缩进
    防止u盘中autorun的一个小方法
    判断单链表是否有环
    四色原理
    Log4j的使用
    Ant学习笔记
    关于Oracle Exp00003问题的解决方法
    装机小记
    用iframe做编辑器
  • 原文地址:https://www.cnblogs.com/OMG-By/p/5338838.html
Copyright © 2020-2023  润新知