码迷,mamicode.com
首页 > 其他好文 > 详细

中共剩余定理

时间:2016-11-19 09:54:29      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:__int64   printf   main   bsp   using   ++   include   ios   i++   

#include<iostream>
#include<stdio.h>
using namespace std;
#define LL __int64
#define ll I64 
void exgcd(LL a,LL b,LL &d,LL &x,LL &y)
{
    if(b==0)
    {
        d=a;
        x=1;
        y=0;
    }
    else
    {
        exgcd(b,a%b,d,y,x);
        x=-1*x;
        y=-1*y;
        y+=(a/b)*x;
    }    
    return ;
    
}
int main()
{
    LL k,a1,r1,a2,r2,d,x,y;
    while(scanf("%lld",&k)!=EOF)
    {
        LL flag=1;
        scanf("%lld%lld",&a1,&r1);
        for(LL i=1;i<k;i++)
        {
            scanf("%lld%lld",&a2,&r2);
            exgcd(a1,a2,d,x,y);
            if((r2-r1)%d)
                flag=0;
            if(flag)
            {
                x=(r2-r1)/d*x;
                y=a2/d;
                x=(x%y+y)%y;
                r1=x*a1+r1;
                a1=(a1*a2)/d;
            }
        }
        exgcd(1,a1,d,x,y);
        if(r1%d)
            flag=0;
        if(flag==0)
            printf("-1\n");
        else
        {
            x=r1/d*x;
            y=a1/d;
            x=(x%y+y)%y;
            printf("%lld\n",x); 
        }
    }
    return 0;
}

 

中共剩余定理

标签:__int64   printf   main   bsp   using   ++   include   ios   i++   

原文地址:http://www.cnblogs.com/1778393206-qq/p/6079814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!