AC日记——青蛙的约会 poj 1061
2017-04-11 20:45
204 查看
青蛙的约会
POJ - 1061思路:
扩展欧几里得;
设青蛙们要跳k步,我们可以得出式子
m*k+a≡n*k+b(mod l)
式子变形得到
m*k+a-n*k-b=t*l
(m-n)*k-t*l=b-a
然后,exgcd函数求出k
然后输出刚刚大于0的k即可
来,上代码:
#include <cmath> #include <cstdio> #include <cstring> #include <iostream> using namespace std; long long n,m,a1,b1,l,xx,yy; long long exgcd(long long a,long long b,long long &x,long long &y) { if(b==0) { x=1,y=0; return a; } long long r=exgcd(b,a%b,x,y),tmp=x; x=y,y=tmp-a/b*y; return r; } int main() { scanf("%lld%lld%lld%lld%lld",&a1,&b1,&m,&n,&l); long long a=m-n,b=l,c=b1-a1; if(a<0) a=-a,c=-c; long long r=exgcd(a,b,xx,yy); if(c/r*r==c) { xx=xx*c/r,l=l/r; if(xx>0) xx=xx%l; else xx=xx%l+l; cout<<xx; } else cout<<"Impossible"; return 0; }
相关文章推荐
- poj 1061 青蛙的约会 拓展欧几里德 解二元一次不定方程
- poj 1061 青蛙的约会
- POJ 1061 青蛙的约会 (扩展欧几里得定理)
- POJ 1061 青蛙的约会
- poj-1061-青蛙的约会
- poj 1061 青蛙的约会 (扩展欧几里得模板)
- 20140714 「初等数论 - 拓展欧几里得+同余模方程」POJ 1061 青蛙的约会
- 【POJ 1061】青蛙的约会
- POJ 1061 青蛙的约会
- poj1061青蛙的约会 同余方程
- poj--1061青蛙的约会(扩展欧几里得公式的应用)
- POJ 1061 青蛙的约会 数学题
- POJ - 1061 青蛙的约会(拓展GCD
- POJ1061 青蛙的约会(扩展欧几里得)
- POJ 1061 青蛙的约会(拓展欧几里得算法求解模线性方程组详解)
- POJ 1061 青蛙的约会
- poj 1061 青蛙的约会
- POJ 1061 青蛙的约会
- POJ1061 青蛙的约会 推广的欧几里得算法
- 青蛙的约会 POJ - 1061 拓展欧几里得