【一般的に使用されるアルゴリズムの概要 - 中国の剰余定理]

また、中国の剰余定理として知られている中国の剰余定理は、(名前、ああは何ですか)メソッドの合同グループ(合同を参照)古代中国を解決することです。数論が重要な定理です。まず、少し聞かせて!ケース!タイトル!今すぐ!

注:三つの数abcの、残りは今年の残りのために計算されたM1のM2 M3、%であった、&& 「と」オペレータです。

1 はそれぞれ、2つの数が割り切れること、および最小数は3分の1以上で割り切れる満たすことができる見つけます。

K1の%のB%C K1 == == 0 &&%のA == K1 1 

K2%%のK2 == Cの== 0 &&%のB == K2 1 

K3%%B K3 == == 0 && %C == K3 1 ; 

2 、デジタル乗算器Iプラスアップに対応する3つの未知数は、得られた結果の最小公倍数の三即ち整数倍の数を引きます。

答え = M1 + K2×M2 + K3×K1×M3 - P×(C×A×B); 

Pが回答を満たす > ;最大整数0 

または応答 =(K1×M1 + K2×M2 + K3×M3)を%(C×B×) 。

少し波を証明してみましょう

 

 M2 = M1が設定* M * ... Mnの

  ミ = M / MI 

  逆元ミミセット ^( - 1 )(MODをMI)

  有するミ *ミ^( - 1)≡ 1 (MI MOD )

  AI *ミ*ミ^( - 1 )≡ai(MI MOD)

  Iと等しくないすべてのjに対して

  AI *ミ*ミ^( - 1)≡ 0 (MJ MOD)

  そう答えであること、すべてのAI *ミ*ミ^ ( - 1)(P MOD)値

P3868 [TJOI2009]ゲス

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 long long x,y;
 4 long long a[15],b[15];
 5 long long n;
 6 void exgcd(long long A,long long B)
 7 {
 8     if(B==0)
 9     {
10         x=1;
11         y=0;
12         return;
13     }
14     exgcd(B,A%B);
15     long long z=x;
16     x=y;
17     y=z-(A/B)*y;
18 }
19 long long fast(long long a1,long long b1,long long mod)
20 {
21     long long ans=0;
22     a1%=mod;
23     b1%=mod;
24     while(b1)
25     {
26         if(b1&1)
27         {
28             ans=(ans+a1)%mod;
29         }
30         b1>>=1;
31         a1=(a1+a1)%mod;
32     }
33     return ans;
34 }
35 long long china()
36 {
37     long long ans=0;
38     long long M=1;
39     for(long long i=1;i<=n;i++)
40         M*=b[i];
41     for(long long i=1;i<=n;i++)
42     {
43         long long m=M/b[i];
44         exgcd(m,b[i]);
45         while(x<0)
46             x+=b[i]; 
47         x%=b[i];
48         ans=(ans+fast(x,fast(m,(a[i]+M)%M,M),M)+M)%M;
49     }
50     return ans;
51 }
52 int main()
53 {
54     cin>>n;
55     for(long long i=1;i<=n;i++)
56     {
57         scanf("%lld",&a[i]);
58     }
59     for(long long i=1;i<=n;i++)
60     {
61         scanf("%lld",&b[i]);
62     }
63     cout<<china();
64     return 0;
65 }

 

おすすめ

転載: www.cnblogs.com/hualian/p/11242504.html