POJ 2891 Strange Way to Express Integers
2015-01-17 21:17
330 查看
模线性同余方程组的求解
#include <cstdio> #include <cstring> using namespace std; const int N = 1005; #define ll long long ll a , b ; ll ex_gcd(ll a , ll &x , ll b , ll &y) { if(b == 0){ x = 1 , y = 0; return a; } ll ans = ex_gcd(b , x , a%b , y); ll t = x; x= y , y = t - (a/b)*y; return ans; } ll mod_line(int n) { ll r = b[0] , lcm = a[0] , x , y; for(int i = 1 ; i<n ; i++) { ll del = b[i] - r; ll g = ex_gcd(lcm , x , a[i] , y); if(del % g != 0) return -1; ll Mod = a[i] / g; x = ((x*del/g % Mod) + Mod)%Mod; r = r + lcm*x; lcm = lcm*a[i]/g; r %= lcm; } return r; } int main() { // freopen("a.in" , "r" , stdin); int n; while(scanf("%d" , &n) == 1) { for(int i= 0 ; i<n ; i++) scanf("%I64d%I64d" , a+i , b+i); printf("%I64d\n" , mod_line(n)); } return 0; }
相关文章推荐
- poj 2891 Strange Way to Express Integers(扩展欧几里得,中国剩余定理)
- POJ 2891 Strange Way to Express Integers
- poj 2891 Strange Way to Express Integers 模数不互素的中国剩余定理
- POJ 2891 Strange Way to Express Integers(中国剩余定理)
- POJ 2891 Strange Way to Express Integers(解一元线性同余方程组)
- poj 2891 Strange Way to Express Integers
- poj 2891 Strange Way to Express Integers(解一般模线性方程组)
- POJ_2891_Strange Way to Express Integers(非互质的中国剩余定理)
- POJ 2891 Strange Way to Express Integers ★ (扩展欧几里德解同余式组)
- lightoj 1319 - Monkey Tradition 中国剩余定理(孙子定理)+poj 2891 Strange Way to Express Integers
- POJ 2891 Strange Way to Express Integers
- poj 2891 Strange Way to Express Integers
- poj 2891 Strange Way to Express Integers
- POJ 2891 Strange Way to Express Integers (解一元线性方程组)
- POJ-2891 Strange Way to Express Integers 模线性方程组
- poj 2891 Strange Way to Express Integers 中国剩余定理
- poj 2891 Strange Way to Express Integers——使用中国剩余定理中处理某些方程模数不互质的方法
- poj-2891(Strange Way to Express Integers)--中国剩余定理&&扩展欧几里得
- poj 2891 Strange Way to Express Integers 模数不互素的中国剩余定理
- POJ 2891 Strange Way to Express Integers