博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1061 青蛙的约会(exgcd)
阅读量:5325 次
发布时间:2019-06-14

本文共 974 字,大约阅读时间需要 3 分钟。

嗯...

 

题目链接:http://poj.org/problem?id=1061

 

两只青蛙相遇时肯定满足:x+k*m≡y+k*n(mod L)

            x+k*m-(y+k*n)=L*s

            k*(n-m)-s*L=x-y
 
即把模线性方程变形后a*x+b*y=c,用exgcd求解,
先ax+by=gcd(a,b)
判断c整除g
然后解就是(x+k*b/g) ,(y-k*a/g)
注意答案要求非负,所以要进行处理...
 

AC代码:

1 #include
2 #include
3 4 using namespace std; 5 6 inline void exgcd(long long a, long long b, long long &g, long long &x, long long &y){ 7 if(!b) { g = a; x = 1; y = 0;} 8 else { exgcd(b, a % b, g, y, x); y -= x * (a / b);} 9 }10 11 int main(){12 long long xx, yy, l, m, n, a, b, c, g, x, y;13 scanf("%lld%lld%lld%lld%lld", &xx, &yy, &m, &n, &l);14 a = n - m; b = l; c = xx - yy;15 exgcd(a, b, g, x, y);//(n-m) * x + l * y = xx - yy 16 if(c % g) printf("Impossible\n");17 else{18 c /= g; b /= g;19 printf("%lld\n", (x % b * c % b + b) % b);//处理非负 20 }21 return 0;22 }
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/11482405.html

你可能感兴趣的文章
介绍Win7 win8 上Java环境的配置
查看>>
移动、联通和电信,哪家的宽带好,看完你就知道该怎么选了!
查看>>
Linux设置环境变量的方法
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
epoll使用具体解释(精髓)
查看>>
AndroidArchitecture
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
大数据学习
查看>>
简单工厂模式
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>