zoukankan      html  css  js  c++  java
  • FZU 1402 猪的安家 中国剩余定理

    这里每两个a[i]之间都互素 , 所以必然存在一个解 , 是一般模线性方程组中的一种特殊情况

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 const int N = 15;
     6 
     7 #define ll long long
     8 ll a[N] , b[N];
     9 
    10 ll ex_gcd(ll a , ll &x , ll b , ll &y)
    11 {
    12     if(b == 0){
    13         x = 1 , y = 0;
    14         return a;
    15     }
    16     ll ans = ex_gcd(b , x , a%b , y);
    17     ll t = x;
    18     x= y , y = t - (a/b)*y;
    19     return ans;
    20 }
    21 //因为均互素所以不必要计算比值
    22 ll mod_line(int n)
    23 {
    24     ll r = b[0] , lcm = a[0] , x , y;
    25     for(int i = 1 ; i<n ; i++)
    26     {
    27         ll del = b[i] - r;
    28         ll g = ex_gcd(lcm , x , a[i] , y);
    29 
    30         x = ((x*del/g % a[i]) + a[i])%a[i];
    31         r = r + lcm*x;
    32         lcm = lcm*a[i];
    33     }
    34     return r;
    35 }
    36 
    37 int main()
    38 {
    39   //  freopen("a.in" , "r" , stdin);
    40     int n;
    41     while(scanf("%d" , &n) == 1)
    42     {
    43         for(int i= 0 ; i<n ; i++)
    44             scanf("%I64d%I64d" , a+i , b+i);
    45         printf("%I64d
    " , mod_line(n));
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    谢尔排序(缩小增量排序)
    折半插入排序
    插入排序
    选择排序
    冒泡排序
    ul+js模拟select+改进
    ul+js模拟select
    前端面试题
    js数组去重的三种常用方法总结
    使用PHP实现文件上传和多文件上传
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4231050.html
Copyright © 2011-2022 走看看