青蛙的约会 POJ - 1061 拓展欧几里得
2017-07-22 10:06
411 查看
这个主要是按照公式来,然后数很接近int 的边界了,随手long long~
A 青蛙 (x+m*t)%l
B 青蛙 (y+n*t)%l
(x+m*t)%l = (y+n*t)%l
—-> (m-n)*t+kl=y-x;
然后用通项求出最小解
A 青蛙 (x+m*t)%l
B 青蛙 (y+n*t)%l
(x+m*t)%l = (y+n*t)%l
—-> (m-n)*t+kl=y-x;
然后用通项求出最小解
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> using namespace std; #define LL long long void exgcd(LL a,LL b,LL &d,LL &x,LL &y) { if(!b){ x=1;y=0;d=a; } else { exgcd(b,a%b,d,y,x); y-=(a/b)*x; } } int main() { LL x,y,m,n,l; while(scanf("%lld %lld %lld %lld %lld",&x,&y,&m,&n,&l)!=EOF){ LL z=(y-x+l)%l; m=(m-n+l)%l; LL k,t,d; exgcd(m,l,d,t,k); if(z%d) printf("Impossible\n"); else { t=(t%l+l)%l; m=m/d,l=l/d; while(t>0) t=t-l; while(t<0) t=t+l; printf("%lld\n",t*(z/d)%l); } } return 0; }
相关文章推荐
- POJ1061 青蛙的约会 拓展欧几里得
- 青蛙的约会 POJ - 1061 拓展欧几里得
- POJ1061 青蛙的约会 拓展欧几里得(GCD)
- 青蛙的约会 POJ - 1061 拓展欧几里得
- 【poj1061-青蛙的约会】拓展欧几里得-不定方程
- poj 1061 青蛙的约会 拓展欧几里得
- 青蛙的约会 POJ - 1061 拓展欧几里得
- POJ 1061 青蛙的约会(拓展欧几里得)
- POJ 1061 青蛙的约会(拓展的欧几里得)
- 青蛙的约会 POJ - 1061 拓展欧几里得
- POJ 1061 青蛙的约会(拓展欧几里得)
- [拓展欧几里得] poj 1061 青蛙的约会
- 青蛙的约会 POJ - 1061 拓展欧几里得
- poj 青蛙的约会 1061 (拓展欧几里得 模板)
- POJ 1061-青蛙的约会(拓展欧几里得)
- poj1061青蛙的约会(exgcd拓展欧几里得)
- 青蛙的约会 POJ - 1061 拓展欧几里得
- POJ 1061 青蛙的约会【拓展欧几里得】
- Poj 1061 青蛙的约会【拓展欧几里得】
- 青蛙的约会 POJ - 1061 拓展欧几里得