또한 중국 잉여 정리로 알려진 중국 잉여 정리, (이름을 아는 무엇) 하는 방법의 적합성 그룹 (합동 참조) 고대 중국을 해결하는 것입니다. 번호 이론은 중요한 정리이다. 먼저, 조금하자! 케이스! 제목! 지금!
참고 : 세 수 abc 방송이, 나머지는 M1의 m2의 m3, 올해의 나머지 부분에 대해 계산 %였다, && 은 "및"연산자입니다.
1 , 각각 두 개의 숫자를 나눌 수 있습니다 발견하고 최소 수는 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 대응 플러스 세 미지수, 즉 얻어진 결과의 최소 공배수의 정수배 세의 수를 뺀다.
대답 = M1 + K2 × M2 + K3 × K1 × M3 - P × (C × × B)
P 답변을 만족 > ; 큰 정수 0
또는 응답 = (K1 × M1 + K2 × M2 + K3 × M3)를 % (c × B A ×) ;
의 작은 물결을 증명하자
M2 = M1 설정 * M * ... Mn은
미 = M / 마일
역원 미 미 세트 ^ (- . 1 ) (국방부를 MI)
갖는 미 * 미 ^ (- . 1 ) ≡ . 1 (마일 MOD )
AI * 미 * 미 ^ (- . 1 ) ≡ai (마일 MOD)
I와 동일하지 모든 J에 대한
AI * 미 * 미 ^ (- . 1 ) ≡ 0 (MJ MOD)
그래서 해답 모든 AI * 미 * 미 ^ (- . 1 ) (P MOD) 값
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 }