poj2891 拓展欧几里得
//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 拓展欧几里得的更多相关文章
- NOIP2012拓展欧几里得
拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得
这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...
- POJ 2891 Strange Way to Express Integers(拓展欧几里得)
Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express ...
- POJ1061 青蛙的约会-拓展欧几里得
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...
- BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)
zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...
- [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)
Power of Fibonacci Time Limit: 5 Seconds Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...
- uva 10548 - Find the Right Changes(拓展欧几里得)
题目链接:uva 10548 - Find the Right Changes 题目大意:给定A,B,C,求x,y,使得xA+yB=C,求有多少种解. 解题思路:拓展欧几里得,保证x,y均大于等于0, ...
随机推荐
- typedef void (*funcptr)(void)
定义一个函数指针类型.比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { printf("再见!&q ...
- VC++编译libpng
目录 第1章简介 1 第2章 Visual C++6.0 2 2.1 打开项目 2 2.2 编译宏 3 2.2.1 小结 5 第3章 Visual C++2010 ...
- <mvc:annotation-driven />
<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个 ...
- 在ArcGIS 10.3标注中竖排文字
ArcGIS 10.3中文字默认“从左至右”排列,而实际的标注比如“XX路.XX街”有些文字是竖直排列的. 接着就涉及到“标注样式”的问题. 如果是整体竖排,点击图层的Properties...(属性 ...
- each用法
1.数组用法 <script> var s=["s","i","l","e","n",& ...
- nodeschool.io 9
~~ JUGGLING ASYNC ~~ 其实就是一个循环,在循环里面输出的顺序,和排列后在外面的顺序不一样,这是为什么呢? 用第三方async包,直接报错了…… This problem is th ...
- HDUOJ-----(1162)Eddy's picture(最小生成树)
Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- IO流--切割 合并文件
import java.io.*; import java.util.*; public class io { public static void main(String[] args)throws ...
- Java集合——Map接口
1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V put(key,value) ...
- 推荐cms
推荐cms : 国外:drupal joomla wordpress 国内:phpcms