zoukankan      html  css  js  c++  java
  • POJ

    题目链接

    扩展CRT模板题,原理及证明见传送门(引用)

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 typedef long long ll;
     5 const ll N=1e5+10;
     6 ll n,m[N],c[N];
     7 void exgcd(ll a,ll b,ll& x,ll& y,ll& g) {
     8     if(!b)x=1,y=0,g=a;
     9     else exgcd(b,a%b,y,x,g),y-=x*(a/b);
    10 }
    11 bool CRT(ll& c1,ll& m1,ll c2,ll m2) {
    12     ll y1,y2,g;
    13     exgcd(m1,m2,y1,y2,g);
    14     if((c1-c2)%g)return 0;
    15     y1*=(c1-c2)/g,c1-=y1%(m2/g)*m1,m1*=m2/g,c1=(c1+m1)%m1;
    16     return 1;
    17 }
    18 ll solve() {
    19     ll C=0,M=1;
    20     for(ll i=0; i<n; ++i)if(!CRT(C,M,c[i],m[i]))return -1;
    21     return C;
    22 }
    23 
    24 int main() {
    25     while(scanf("%lld",&n)==1) {
    26         for(ll i=0; i<n; ++i)scanf("%lld%lld",&m[i],&c[i]);
    27         printf("%lld
    ",solve());
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    2016.7.31整机升级计划
    UVa 1588
    UVa1587
    Jzoj4714 公约数
    Jzoj4714 公约数
    Jzoj4713 A
    Jzoj4713 A
    Jzoj4711 Binary
    Jzoj4711 Binary
    Jzoj4710 Value
  • 原文地址:https://www.cnblogs.com/asdfsag/p/10432465.html
Copyright © 2011-2022 走看看