J - 青蛙的约会(扩展欧几里得)
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 - 青蛙的约会(扩展欧几里得)相关推荐
- POJ 1061 青蛙的约会 (扩展欧几里得)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 97673 Accepted: 18409 Descripti ...
- POJ - 1061 青蛙的约会(扩展欧几里得)
题目链接:点击查看 题目大意:两只青蛙在一个单向循环数轴上跳动,给出初始位置和每秒跳动的距离以及数轴长度,问是否可以相遇,若能相遇求出最小时间 题目分析:自从第一次接触扩展欧几里得以来已经有半年时间了 ...
- JZYZOJ1371 青蛙的约会 扩展欧几里得 GTMD数论
http://172.20.6.3/Problem_Show.asp?id=1371 题意是两个青蛙朝同一个方向跳 http://www.cnblogs.com/jackge/archive/2013 ...
- bzoj 1477 青蛙的约会 拓展欧几里得(详细解析)
大水题: 题目戳这里:http://www.lydsy.com/JudgeOnline/problem.php?id=1477 这道题我们分析在一个数轴上有两只青蛙,这个数轴是首尾交接的,所以可以一直 ...
- poj-青蛙的约会(扩展欧几里得)nyoj-小柯的约会
由题意可列出方程 x + m * s - (y + n * s) = k * l; 化简得 (n-m)*s + k*l = x - y 化简得 (n-m)*s = x - y (mod l); ...
- 欧几里得定理与扩展欧几里得定理
欧几里的定理(辗转相除法): gcd(a,b) = gcd(b,a%b) gcd(a,b)表示a,b的最大公约数 证明: 设 a > b c = a%b a = k * b + c (k为某个整 ...
- 求解线性同余方程--扩展欧几里得
资料来源:https://blog.csdn.net/ //求解ax=b(mod m) 返回0为无解,否则返回gcd(a,m)个mod m意义下的解,用X[]存 int mod(int a, int ...
- 欧几里得 扩展欧几里得
欧几里得 & 扩展欧几里得 时间复杂度T(n):O(log2n); 空间复杂度S(n):O(n); Advantages: 1. 时间复杂度不高,和普通欧几里得一样: 2. 代 ...
- 欧几里得算法扩展欧几里得
本文包括: 1.几里德算法 递归实现 2.扩展欧几里德算法 递归实现 -实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解. 欧几里得算法 欧几里德算法又称辗转相除法 ...
最新文章
- 17.SpringMVC核心技术-拦截器
- wallpaper怎么改后缀_腾讯微信视频号怎么引流?腾讯视频号引流有哪些方法?
- 自动驾驶发展调查:产业化还需技术“破冰”
- java上机练习01
- 循序渐进学Oracle之索引、权限、角色
- fp5139应用电路图_四款l6599d经典应用电路图详解
- lync 2013 企业版部署 (四)安装office web app server
- 如何在SAP Spartacus category 页面里拿到当前的category信息
- python读单行文本求平均值_利用Python读取json数据并求数据平均值
- assembly 输出ab中所有数_.NET Core中批量注入Grpc服务
- 工作流实战_06_flowable 流程定义的删除
- 37 FI配置-财务会计-固定资产-组织结构-复制参考折旧表/折旧范围表
- python generator与coroutine
- 广西中专机器人应用与维护_2020年广西职业院校技能大赛中职组 智能家居安装与维护和机器人技术应用在柳州市一职校落幕...
- 1、RabbitMQ初探
- 虚拟串口 VSPD 的使用
- UART通信协议(一)比特率和波特率
- 连续+离散变量的联合分布求解
- C++ 中cin的输入原理及字符串(string、char[])输入问题
- HTML5超链接链接ppt可以吗,PPT插入超链接的方法步骤详解
热门文章
- 全国计算机等级考试题库二级C操作题100套(第33套)
- 全国计算机等级考试题库二级C操作题100套(第07套)
- 简述控制反转ioc_讲一下你理解的 DI 、IoC、DIP ?
- JNI----Native本地方法接口
- 唐山师范学院计算机考试,[河北]唐山师范学院2017年3月计算机一级考试报名时间...
- GitHub上13个学习资源项目,值得收藏!
- stm32超声波测距代码_干货!特斯拉Autopilot核心传感器解读超声波雷达篇
- 外卖和快递行业数据_下周一起,整治全面启动!锁定全市外卖、快递行业!
- Linux文件编程(2)
- 对数据可视化的理解_使数据可视化更容易理解