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(扩展欧几里德)相关推荐

  1. POJ - 2142 The Balance(扩展欧几里得)

    题目链接:点击查看 题目大意:给出两种重量的砝码,我们需要利用天平称出指定重量的药物,我们需要求出这两种砝码各自的数量,使得砝码数量之和最小 题目分析:我们可以先列出关系式,假设两个砝码的重量分别为a ...

  2. POJ 2142-The Balance(扩展欧几里德)

    题目地址:POJ 2142 题意:有两种类型的砝码质量分别为a和b,要求称出质量为d的物品,要求a的数量x和b的数量y的和x+y最小,若有多个x+y的值,取ax+by最小的. 思路:我们应该求ax+b ...

  3. poj 2115 C Looooops(扩展欧几里德算法)

    题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...

  4. POJ 2142: 扩展欧几里得算法

    POJ 2142: The Balance Description Data 思路 扩展欧几里得算法 线性组合 Code --扩展欧几里得算法 原题传送门 Description Ms. Iyo Ki ...

  5. POJ 2891 Strange Way to Express Integers ★ (扩展欧几里德解同余式组)

    题目链接:http://poj.org/problem?id=2891 题目大意: 很好的一道题,解同余式组: x = r1 (mod m1) x = r2 (mod m2) -- x = rp (m ...

  6. 青蛙的约会(POJ 1061 扩展欧几里德算法)

    POJ 1061 青蛙的约会 扩展欧几里德算法简单介绍及应用 题目大意: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳, ...

  7. 集训笔记---扩展欧几里德算法(POJ NO.1061 青蛙的约会 有点烦人小跳蛙gcd)

    又在搬砖,本来以为这是一个追及问题,后来发现数据好像并不是那么个意思,后来把方程列出来,经过一个去模的操作,我们其实可以找到一点线索,那就是,一个经过变形的二元一次方程,那么在这种情况下,就可以利用扩 ...

  8. 欧几里德算法 扩展欧几里德算法

    欧几里德算法 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数. 计算公式:gcd(a,b) = gcd(b,a mod b). 算法实现: public static int g ...

  9. 扩展欧几里德算法详解

    转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595 扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两 ...

最新文章

  1. 用计算机制作演示文稿教案博客,制作演示文稿 教学反思
  2. jmeter学习笔记4 数据库插入
  3. Linux命令行性能监控工具大全
  4. c#byte字节流的读取_C#中的byte关键字
  5. 安卓系统双屏异显_Android实现双屏异显
  6. 【Oracle 学习】Scott账号解锁
  7. 鏖战九载,Google 是否会因 Oracle 而弃用 Java?
  8. swift 展示html富文本,Swift HTML富文本显示
  9. PostgreSQL(1)数据库安装(win和linux)
  10. iOS-集成支付宝支付、微信支付简单总结
  11. 运行CATIA2018主程序setup.exe时,报错setup:Problem with VC11 Runtime installation
  12. Mugeda(木疙瘩)H5案例课—房地产楼书H5制作-岑远科-专题视频课程
  13. 如何做无线抄表既SCADA无线数据采集管理系统
  14. 中国科学院大学2015年数学分析高等代数考研试题
  15. MySQL的sql大于号(小于号)的使用
  16. Module containing this breakpoint has not yet loaded or the breakpoint address not be obtained
  17. sccm安装linux系统,SCCM Client for LINUX on FIPS Enabled Systems
  18. 搭建通过路由器连接到光猫的服务器
  19. 点云缩放—python open3d
  20. ANSI E1.11-2008(R2018) DMX512-A 部分翻译

热门文章

  1. 自然码辅助码在线查询网站
  2. 软件通用自动更新系统
  3. 最新2018我破解了天某查 企某查 启某宝 企某猫和全国源站工商企业大数据爬虫系统
  4. 微软面试题:打印折纸的折痕
  5. 【强化学习】迷宫寻宝:Sarsa和Q-Learning
  6. 量化私募行业2021年度关键词出炉
  7. Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行)
  8. #DAYU200#如何动态调节屏幕亮度
  9. 服务器的智能监控管理结束,HART智能仪表在线监控系统的设计与实现
  10. python解决微信登录昵称中带有表情emoji报错,亲测有效。