//Accepted    164 KB    16 ms
 //拓展欧几里得
 //m=a1*x+b1  --(1)
 //m=a2*(-y)+b2 --(2)
 //->a1*x+a2*y=b2-b1
 //由欧几里得算法可得上式的解
 //由a*x+b*y=gcd(a,b)
 //可得a(x+b)+b(y-a)=gcd(a,b)
 //所以最小正整数解x=(x%b+b)%b;
 //现考虑由(1)(2)两式得到的解m
 //有x=m mod (a1*a2/gcd(a1,a2))
 //m是最小正整数解,m+a1*a2/gcd(a1,a2)也是(1)(2)的解
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 __int64 extend_gcd(__int64 a,__int64 b,__int64 &x,__int64 &y)
 {
     )
     {
         x=;
         y=;
         return a;
     }
     __int64 r=extend_gcd(b,a%b,x,y);
     __int64 t=x;
     x=y;
     y=t-a/b*y;
     return r;
 }
 int main()
 {
     int n;
     while (scanf("%d",&n)!=EOF)
     {;
     __int64 a1,b1,a2,b2;
     __int64 x,y,c,d;
     scanf("%I64d%I64d",&a1,&b1);
     ;i<=n;i++)
     {
         scanf("%I64d%I64d",&a2,&b2);
         if (flag) continue;
         d=extend_gcd(a1,a2,x,y);
         c=b2-b1;
         if (c%d)
         {
             flag=;
         }
         else
         {
             __int64 p=a2/d;
             x=(c/d*x%p+p)%p;
             b1=a1*x+b1;
             a1=a1/d*a2;
         }
     }
     if (flag) printf("-1\n");
     else printf("%I64d\n",b1);
     }
     ;
 }

poj2891 拓展欧几里得的更多相关文章

  1. NOIP2012拓展欧几里得

    拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...

  2. poj 1061 青蛙的约会 拓展欧几里得模板

    // poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...

  3. bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得

    这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...

  4. POJ 2891 Strange Way to Express Integers(拓展欧几里得)

    Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express ...

  5. POJ1061 青蛙的约会-拓展欧几里得

    Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...

  6. BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)

    污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...

  7. BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)

    zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...

  8. [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)

    Power of Fibonacci Time Limit: 5 Seconds      Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...

  9. uva 10548 - Find the Right Changes(拓展欧几里得)

    题目链接:uva 10548 - Find the Right Changes 题目大意:给定A,B,C,求x,y,使得xA+yB=C,求有多少种解. 解题思路:拓展欧几里得,保证x,y均大于等于0, ...

随机推荐

  1. .NET简谈反射(动态调用)

    我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员的关键性的一步. 有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象 ...

  2. MySQL 存储php中json_encode格式中文问题及解决

    MySQL 存储php中json_encode格式信息  ,遇到中文时, 会变成一堆类似uxxxx信息. 1. 原因分析:在存储到数据库时!MySQL 不会存储 unicode 字符: MySQL 仅 ...

  3. 233. Number of Digit One *HARD* -- 从1到n的整数中数字1出现的次数

    Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...

  4. MYSQL的三种注释

    #CREATE SCHEMA `paw-jj` DEFAULT CHARACTER SET utf8 ; -- select * from vrv_paw_terminalinfo /*  selec ...

  5. python中关闭文件

    1.关闭文件,通过f.write把内容写入文件会覆盖之前文件中的内容

  6. 语句:分支语句、switch case ——7月22日

    语句的类型包括:声明语句.表达式语句.选择语句.循环语句.跳转语句.异常语句 1.声明语句引:入新的变量或常量. 变量声明可以选择为变量赋值. 在常量声明中必须赋值. 例如: int i = 0;// ...

  7. [转]Web基础架构:负载均衡和LVS

    以下内容转载自:http://www.importnew.com/11229.html 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服 ...

  8. 如何在 Linux 上用 SQL 语句来查询 Apache 日志

    Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中 ...

  9. ACTIVITI 源码研究之命令模式执行

    ACTIVITI 是一个优秀开源软件,通过阅读源码,我们不但可以了解工作流引擎执行的原理还可以增加个人的编码功力. ACTIVITI 所有执行过程都是采用命令模式进行执行. 本文主要描述流程引擎数据保 ...

  10. 无需激活用户直接登入discuz

    //打开discuz/api/uc.php //synlogin方法(180行)处,往下找到 if(($member = getuserbyuid($uid, 1))) { dsetcookie('a ...