zoukankan      html  css  js  c++  java
  • 中国剩余定理模板

    不知道说什么,就完全一个模板来着……不过里面的意蕴深厚,有待深究!
    include
     using namespace std;
     __int64 m[1000];//除数
     __int64 r[1000];//余数
     __int64 X,Y;
     
    __int64 f2(__int64 a, __int64 b)//扩展欧拉
     {
         if (b==0)
         {
             X=1;
             Y=0;
             return a;
         }
     
        __int64 d=f2(b,a%b);
         __int64 t=X;
         X=Y;
         Y=t-a/b*Y;
         return d;
     }
     
    __int64 f1(long len)//中国剩余定理
     {
         __int64 M=1;
         int i;
         for (i=0;i<len;++i)
         {
             M*=m[i];
         }
        __int64 res=0;
        for (i=0;i<len;++i)
         {
             __int64 Mi=M/m[i];
             f2(Mi,m[i]);
             res= (res+Mi*X*r[i])%M;
         }
         if (res<0)
         {
             res+=M;
         }
         return res;
     }
     
    int main()
     {
         int n;
         while (scanf("%ld",&n)!=EOF)
         {
             int i;
             for (i=0;i<n;++i)
             {
                 scanf("%I64d %I64d",&m[i],&r[i]);
             }
             printf("%I64d\n",f1(n));
         }
         return 0;
     }
  • 相关阅读:
    求助
    第五次作业
    第四次作业
    第三次作业
    第二次作业(四则运算)
    关于软件工程相关疑问
    小组成员名单()
    第四次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/cchun/p/2520184.html
Copyright © 2011-2022 走看看