标签:des style blog color io os ar java strong
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2223 Accepted Submission(s): 804
两两求线性同余方程。
#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> #include <cmath> using namespace std; typedef long long LL; const double PI = acos(-1.0); LL n , _ ,cas = 1 , a[12] , r[12] ; void e_gcd( LL a ,LL b , LL &d , LL &x, LL &y ) { if( b == 0 ){ x = 1 , y = 0 , d = a ; return ; } e_gcd( b, a%b , d, y ,x ) ; y -= x*( a/b ); } LL gcd( LL a , LL b ){ return b == 0 ? a : gcd( b , a%b ) ;} void run() { LL lcm = 1 ; cin >> n ; for( int i = 0 ; i < n ; ++i ){ cin >> a[i] ; lcm = lcm / gcd( lcm , a[i] ) * a[i] ; } for( int i = 0 ; i < n ; ++i ){ cin >> r[i]; } for( int i = 1 ; i < n ; ++i ) { LL d , x , y , A = a[0] , B = a[i] , c = r[i] - r[0] ; e_gcd(A,B,d,x,y) ; if( c % d ) { cout << "-1" <<endl ; return ; } LL b1 = B / d ; x *= c / d; x = ( x % b1 + b1 ) % b1; r[0] = a[0] * x + r[0] ; a[0] = a[0] *( a[i] / d ); } if( r[0] == 0 ) cout<< lcm <<endl ; else cout << r[0] <<endl; } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); #endif // LOCAL ios::sync_with_stdio(0); cin >> _ ; while( _-- ){ cout <<"Case "<< cas++ << ": "; run(); } }
标签:des style blog color io os ar java strong
原文地址:http://www.cnblogs.com/YRETSIM/p/4002699.html