题意:有两种砝码m1, m2和一个物体G,m1的个数x1,  m2的个数为x2, 问令x1+x2最小,并且将天平保持平衡 !输出  x1 和 x2

题解:这是欧几里德拓展的一个应用,欧几里德求不定方程ax+by=c:

  先介绍一下:

        1. ax+by=gcd(a, b)  相当于a,b互素。则同过欧几里德拓展,有整数解x, y

        2.对于 ax+by=c  则转化为  两边同时除以c 再乘以 gcd(a/c, b/c)  这样就化成了 1结论!

        3.求一个x的最小值为 x=x*c/gcd(a, b);  为了保证为正数, x=(x%(b/gcd(a, b))+b/gcd(a, b))%(b/gcd(a, b));

        4.注意:x和y的地位相同的!注意:要他们的代表意义!

思路:

  已知推出公式  m1x+m2y=C  由欧几里德拓展  求出 x, y

  然后求出最小的x1  ,然后根据方程 解出 y1=(C- m1x1)/m2;

  同理求出最小的y2 ,根据方程求出 x2    如果为负数就化为正数

ac代码:

#include<cstdio>
#define ll long long void exgcd(ll a, ll b, ll &d, ll &x, ll &y)
{
if (!b){ d = a; x = ; y = ; }
else{ exgcd(b, a%b, d, y, x); y -= x*(a / b); }
}
int main()
{
ll A, B, C;
while (scanf("%lld%lld%lld", &A, &B, &C) != EOF && (A || B || C)){
ll x, y, g;
exgcd(A, B, g, x, y);
ll x1 = x*C / g;
x1 = (x1 % (B / g) + (B / g)) % (B / g);
ll y1 = (C - A*x1) / B; if (y1 < )y1 = -y1; ll y2 = y*C / g;
y2 = (y2 % (A / g) + (A / g)) % (A / g);
ll x2 = (C - B*y2) / A; if (x2 < )x2 = -x2;
if (x1 + y1 < x2 + y2)
{
printf("%lld %lld\n", x1, y1);
}
else
{
printf("%lld %lld\n", x2, y2);
}
}
}

E - The Balance POJ - 2142 (欧几里德)的更多相关文章

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

    Description Ms. Iyo Kiffa-Australis has a balance and only two kinds of weights to measure a dose of ...

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

    题目链接:https://cn.vjudge.net/contest/276376#problem/E 题目大意:给你n,m,k,n,m代表当前由于无限个质量为n,m的砝码.然后当前有一个秤,你可以通 ...

  3. The Balance POJ - 2142

    首先,可以知道题目要求解一个\(ax+by=c\)的方程,且\(x+y\)最小. 感性证明: 当\(a>b\)时,\(y\)取最小正整数解,\(b\)减的多,\(a\)增的少,此时\(x+y\) ...

  4. POJ.2142 The Balance (拓展欧几里得)

    POJ.2142 The Balance (拓展欧几里得) 题意分析 现有2种质量为a克与b克的砝码,求最少 分别用多少个(同时总质量也最小)砝码,使得能称出c克的物品. 设两种砝码分别有x个与y个, ...

  5. POJ 2142 The Balance【扩展欧几里德】

    题意:有两种类型的砝码,每种的砝码质量a和b给你,现在要求称出质量为c的物品,要求a的数量x和b的数量y最小,以及x+y的值最小. 用扩展欧几里德求ax+by=c,求出ax+by=1的一组通解,求出当 ...

  6. poj 2142 The Balance

    The Balance http://poj.org/problem?id=2142 Time Limit: 5000MS   Memory Limit: 65536K       Descripti ...

  7. POJ 2142 The Balance(exgcd)

    嗯... 题目链接:http://poj.org/problem?id=2142 AC代码: #include<cstdio> #include<iostream> using ...

  8. POJ 2142 The Balance (解不定方程,找最小值)

    这题实际解不定方程:ax+by=c只不过题目要求我们解出的x和y 满足|x|+|y|最小,当|x|+|y|相同时,满足|ax|+|by|最小.首先用扩展欧几里德,很容易得出x和y的解.一开始不妨令a& ...

  9. POJ - 2142 The Balance(扩展欧几里得求解不定方程)

    d.用2种砝码,质量分别为a和b,称出质量为d的物品.求所用的砝码总数量最小(x+y最小),并且总质量最小(ax+by最小). s.扩展欧几里得求解不定方程. 设ax+by=d. 题意说不定方程一定有 ...

随机推荐

  1. centos6.5修改yum安装的mysql默认目录

    0.说明 Linux下更改yum默认安装的mysql路径datadir. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql. 假如要把MySQL目录移到/home/data ...

  2. (整理)Sublime Text 3 安装、破解、安装Package Control、汉化、添加到右键菜单、代码格式化、禁止更新

    Sublime Text 3好用,但是每次安装到最后用着顺手,得在网上找半天安装.破解.安装Package Control.汉化.添加到右键菜单.代码格式化等等的教程,今天有空给自己整理一下吧. 一. ...

  3. java中import static和import的区别【转】

    转自:http://blog.csdn.net/ygc87/article/details/7371254

  4. ServiceFramework作为Java Web框架都有哪些不错的设计

    前言 最近需要开发一个纯API的项目,mlsql-cluster,从无到有,到最后完整的proxy功能开发完毕,只花了四个小时不到,自己不尽小感叹了一把 ServiceFramework的高效. 关于 ...

  5. Modular Inverse(zoj3609+欧几里德)

    Modular Inverse Time Limit: 2 Seconds      Memory Limit: 65536 KB The modular modular multiplicative ...

  6. JS实现页面分享代码share,不需要第三方接口

    在开发一个页面的时候常常会有这么一个小功能,就是分享该页面中的信息. 常见的分享代码有百度分享,JiaThis分享插件(现在貌似不能用了),bshare分享插件等,我主要分享一下自定义分享代码,如下: ...

  7. unity相机跟随Player常用方式

    固定跟随,无效果(意义不大) public class FollowPlayer : MonoBehaviour { public Transform Player; private Vector3 ...

  8. (网页)js最新手机号码、电话号码正则表达式

    正则表达式(regular expression)是一个描述字符模式的对象.使用JavaScript正则表达式可以进行强大的模式匹配和文本检索与替换功能. 手机号码正则表达式验证. function ...

  9. python网络编程:socketserver的基本使用

    本文内容: socketserver的介绍 socketserver的使用 socketserver的异步服务端 首发时间:2018-03-21 也可以使用socketserver来创建socket ...

  10. Linux Mint Mate 常用

    Linux Mint基于Ubuntu  Mate 桌面版据说资源占用较少 http://mirrors.tuna.tsinghua.edu.cn/linuxmint-cd/stable/17.3/li ...