https://vjudge.net/contest/218366#problem/J

第一步追及公式要写对:y+nk-(x+mk)=pL => (n-m)k+lp=x-y

可以看出扩展欧几里得原型,这里注意扩展欧几里得求出的是任意解,非最优,要推出最小解k。

(n-m)x+ly=gcd => (n-m)(x*(x-y)/gcd) + l*y*(x-y)/gcd = x-y

则k = x*(x-y)/gcd(某一解非最小),由于k每次可转移t = l/gcd

最小解为(k%t+t)%t。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cstdlib>
 6 #include<cmath>
 7 #include<vector>
 8 #include<stack>
 9 #include<queue>
10 #define lson l, m, rt<<1
11 #define rson m+1, r, rt<<1|1
12 #define IO ios::sync_with_stdio(false);cin.tie(0);
13 #define INF 0x3f3f3f3f
14 #define MAXN 500010
15 const int MOD=1e9+7;
16 typedef long long ll;
17 using namespace std;
18 ll ext_gcd(ll a, ll b, ll &x, ll &y)
19 {
20     if(b == 0){
21         x = 1;
22         y = 0;
23         return a;
24     }
25     ll r = ext_gcd(b, a%b, x, y);
26     ll t = x;
27     x = y;
28     y = t-(a/b)*y;
29     return r;
30 }
31 int main()
32 {
33     ll n, m, x, y, l, k, p;
34     cin >> x >> y >> m >> n >> l;
35     ll r = ext_gcd(n-m, l, k, p);//k和p为任意解,非最优
36     if((x-y)%r!=0){
37         cout << "Impossible" << endl;
38     }
39     else{
40         ll t = l/r;//k每次转移量
41         ll ans = k*(x-y)/r;//从扩展欧几里得标准公式转到我们所列公式求得的k值
42         cout << (ans%t+t)%t << endl;
43     }
44     return 0;
45 }

转载于:https://www.cnblogs.com/Surprisezang/p/8733200.html

J - 青蛙的约会(扩展欧几里得)相关推荐

  1. POJ 1061 青蛙的约会 (扩展欧几里得)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 97673   Accepted: 18409 Descripti ...

  2. POJ - 1061 青蛙的约会(扩展欧几里得)

    题目链接:点击查看 题目大意:两只青蛙在一个单向循环数轴上跳动,给出初始位置和每秒跳动的距离以及数轴长度,问是否可以相遇,若能相遇求出最小时间 题目分析:自从第一次接触扩展欧几里得以来已经有半年时间了 ...

  3. JZYZOJ1371 青蛙的约会 扩展欧几里得 GTMD数论

    http://172.20.6.3/Problem_Show.asp?id=1371 题意是两个青蛙朝同一个方向跳 http://www.cnblogs.com/jackge/archive/2013 ...

  4. bzoj 1477 青蛙的约会 拓展欧几里得(详细解析)

    大水题: 题目戳这里:http://www.lydsy.com/JudgeOnline/problem.php?id=1477 这道题我们分析在一个数轴上有两只青蛙,这个数轴是首尾交接的,所以可以一直 ...

  5. poj-青蛙的约会(扩展欧几里得)nyoj-小柯的约会

    由题意可列出方程 x + m * s - (y + n * s) = k * l; 化简得   (n-m)*s + k*l = x - y 化简得   (n-m)*s = x - y (mod l); ...

  6. 欧几里得定理与扩展欧几里得定理

    欧几里的定理(辗转相除法): gcd(a,b) = gcd(b,a%b) gcd(a,b)表示a,b的最大公约数 证明: 设 a > b c = a%b a = k * b + c (k为某个整 ...

  7. 求解线性同余方程--扩展欧几里得

    资料来源:https://blog.csdn.net/ //求解ax=b(mod m) 返回0为无解,否则返回gcd(a,m)个mod m意义下的解,用X[]存 int mod(int a, int ...

  8. 欧几里得 扩展欧几里得

    欧几里得  &  扩展欧几里得 时间复杂度T(n):O(log2n); 空间复杂度S(n):O(n); Advantages: 1.    时间复杂度不高,和普通欧几里得一样: 2.    代 ...

  9. 欧几里得算法扩展欧几里得

    本文包括: 1.几里德算法 递归实现 2.扩展欧几里德算法 递归实现 -实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解. 欧几里得算法 欧几里德算法又称辗转相除法 ...

最新文章

  1. 17.SpringMVC核心技术-拦截器
  2. wallpaper怎么改后缀_腾讯微信视频号怎么引流?腾讯视频号引流有哪些方法?
  3. 自动驾驶发展调查:产业化还需技术“破冰”
  4. java上机练习01
  5. 循序渐进学Oracle之索引、权限、角色
  6. fp5139应用电路图_四款l6599d经典应用电路图详解
  7. lync 2013 企业版部署 (四)安装office web app server
  8. 如何在SAP Spartacus category 页面里拿到当前的category信息
  9. python读单行文本求平均值_利用Python读取json数据并求数据平均值
  10. assembly 输出ab中所有数_.NET Core中批量注入Grpc服务
  11. 工作流实战_06_flowable 流程定义的删除
  12. 37 FI配置-财务会计-固定资产-组织结构-复制参考折旧表/折旧范围表
  13. python generator与coroutine
  14. 广西中专机器人应用与维护_2020年广西职业院校技能大赛中职组 智能家居安装与维护和机器人技术应用在柳州市一职校落幕...
  15. 1、RabbitMQ初探
  16. 虚拟串口 VSPD 的使用
  17. UART通信协议(一)比特率和波特率
  18. 连续+离散变量的联合分布求解
  19. C++ 中cin的输入原理及字符串(string、char[])输入问题
  20. HTML5超链接链接ppt可以吗,PPT插入超链接的方法步骤详解

热门文章

  1. 全国计算机等级考试题库二级C操作题100套(第33套)
  2. 全国计算机等级考试题库二级C操作题100套(第07套)
  3. 简述控制反转ioc_讲一下你理解的 DI 、IoC、DIP ?
  4. JNI----Native本地方法接口
  5. 唐山师范学院计算机考试,[河北]唐山师范学院2017年3月计算机一级考试报名时间...
  6. GitHub上13个学习资源项目,值得收藏!
  7. stm32超声波测距代码_干货!特斯拉Autopilot核心传感器解读超声波雷达篇
  8. 外卖和快递行业数据_下周一起,整治全面启动!锁定全市外卖、快递行业!
  9. Linux文件编程(2)
  10. 对数据可视化的理解_使数据可视化更容易理解