POJ 2142 The Balance(扩展欧几里德)
The Balance
由题意可得:
{ax1−by1=dbx2−ay2=d\begin{cases}ax_1 - by_1 = d \\\\ bx_2 - ay_2 = d\end{cases}⎩⎪⎨⎪⎧ax1−by1=dbx2−ay2=d
用exgcdexgcdexgcd解出两个最小解,然后输出最小的那一对即可。注意如果x2+y2x_2 + y_2x2+y2更小要先输出y2y_2y2。
代码
#include<iostream>
#include<cmath>using namespace std;void exgcd(int a, int b, int &x, int &y, int &d)
{if(b == 0) {x = 1, y = 0;d = a;return;}exgcd(b, a % b, y, x, d);y -= a / b * x;
}void solve(int a, int b, int d, int &x, int &y)
{int g, t;exgcd(a,b,x,y,g);x *= d / g;t = b / g;x = (x % t + t) % t; //最小正整数解y = abs((a * x - d) / b);
}int main()
{#ifndef ONLINE_JUDGEfreopen("input.in","r",stdin);
#endifint a,b,c,x1,x2,y1,y2;while(cin >> a >> b >> c && (a + b + c)) {solve(a,b,c,x1,y1);solve(b,a,c,x2,y2);if(x1 + y1 < x2 + y2) {cout << x1 << ' ' << y1 << endl;}else {cout << y2 << ' ' << x2 << endl;}}return 0;
}
POJ 2142 The Balance(扩展欧几里德)相关推荐
- POJ - 2142 The Balance(扩展欧几里得)
题目链接:点击查看 题目大意:给出两种重量的砝码,我们需要利用天平称出指定重量的药物,我们需要求出这两种砝码各自的数量,使得砝码数量之和最小 题目分析:我们可以先列出关系式,假设两个砝码的重量分别为a ...
- POJ 2142-The Balance(扩展欧几里德)
题目地址:POJ 2142 题意:有两种类型的砝码质量分别为a和b,要求称出质量为d的物品,要求a的数量x和b的数量y的和x+y最小,若有多个x+y的值,取ax+by最小的. 思路:我们应该求ax+b ...
- poj 2115 C Looooops(扩展欧几里德算法)
题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...
- POJ 2142: 扩展欧几里得算法
POJ 2142: The Balance Description Data 思路 扩展欧几里得算法 线性组合 Code --扩展欧几里得算法 原题传送门 Description Ms. Iyo Ki ...
- POJ 2891 Strange Way to Express Integers ★ (扩展欧几里德解同余式组)
题目链接:http://poj.org/problem?id=2891 题目大意: 很好的一道题,解同余式组: x = r1 (mod m1) x = r2 (mod m2) -- x = rp (m ...
- 青蛙的约会(POJ 1061 扩展欧几里德算法)
POJ 1061 青蛙的约会 扩展欧几里德算法简单介绍及应用 题目大意: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳, ...
- 集训笔记---扩展欧几里德算法(POJ NO.1061 青蛙的约会 有点烦人小跳蛙gcd)
又在搬砖,本来以为这是一个追及问题,后来发现数据好像并不是那么个意思,后来把方程列出来,经过一个去模的操作,我们其实可以找到一点线索,那就是,一个经过变形的二元一次方程,那么在这种情况下,就可以利用扩 ...
- 欧几里德算法 扩展欧几里德算法
欧几里德算法 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数. 计算公式:gcd(a,b) = gcd(b,a mod b). 算法实现: public static int g ...
- 扩展欧几里德算法详解
转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595 扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两 ...
最新文章
- 用计算机制作演示文稿教案博客,制作演示文稿 教学反思
- jmeter学习笔记4 数据库插入
- Linux命令行性能监控工具大全
- c#byte字节流的读取_C#中的byte关键字
- 安卓系统双屏异显_Android实现双屏异显
- 【Oracle 学习】Scott账号解锁
- 鏖战九载,Google 是否会因 Oracle 而弃用 Java?
- swift 展示html富文本,Swift HTML富文本显示
- PostgreSQL(1)数据库安装(win和linux)
- iOS-集成支付宝支付、微信支付简单总结
- 运行CATIA2018主程序setup.exe时,报错setup:Problem with VC11 Runtime installation
- Mugeda(木疙瘩)H5案例课—房地产楼书H5制作-岑远科-专题视频课程
- 如何做无线抄表既SCADA无线数据采集管理系统
- 中国科学院大学2015年数学分析高等代数考研试题
- MySQL的sql大于号(小于号)的使用
- Module containing this breakpoint has not yet loaded or the breakpoint address not be obtained
- sccm安装linux系统,SCCM Client for LINUX on FIPS Enabled Systems
- 搭建通过路由器连接到光猫的服务器
- 点云缩放—python open3d
- ANSI E1.11-2008(R2018) DMX512-A 部分翻译