题目链接:https://cn.vjudge.net/contest/276376#problem/E

题目大意:给你n,m,k,n,m代表当前由于无限个质量为n,m的砝码。然后当前有一个秤,你可以通过秤的左边和右边的砝码种类和数目,能够测出m的质量,然后问你使用两个砝码总和最少的情况。

具体思路:和前面几个题的思路一样,列出等式Ax+By=C,然后再通过扩展欧几里得去解这个式子,当前一共有两组解,一个是通过x,解出y。另一个是通过y,解出x。我们就取这两种的总和最小的情况就可以了。注意x和y都应该是非负数,所以当第一种情况解出的y是负值的时候,y应该取反,第二种情况类似。

AC代码:

 #include<iostream>
#include<stack>
#include<cmath>
#include<queue>
#include<stdio.h>
#include<algorithm>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn = 1e5+;
ll xo,yo;
ll exgcd(ll a,ll b)
{
if(b==)
{
xo=;
yo=;
return a;
}
ll gcd=exgcd(b,a%b);
ll tmp=yo;
yo=xo-a/b*yo;
xo=tmp;
return gcd;
}
int main()
{
ll a,b,c;
while(~scanf("%lld %lld %lld",&a,&b,&c)&&(a+b+c))
{
ll t=exgcd(a,b);
ll t1=b/t;
if(t1<)
t1-=t1;
ll x1=(c*xo/t%t1+t1)%t1;
ll y1=(c-a*x1)/b;
if(y1<)y1=-y1;
ll minn=x1+y1;
t1=a/t;
ll y2=(yo*c/t%t1+t1)%t1;
ll x2=(c-b*y2)/a;
if(x2<)x2=-x2;
if(minn>x2+y2)x1=x2,y1=y2;
printf("%lld %lld\n",x1,y1);
}
return ;
}

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

  1. 扩展欧几里得求解同余方程(poj 1061)

    设方程 ax + by = c , 若 gcd(a,b) 是 c的因子(记作gcd(a,b)|c)则方程有解,反之无解. 其中x0,y0是方程的一组特解 , d = gcd(a,b), poj1061 ...

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

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

  3. POJ 2142 - The Balance [ 扩展欧几里得 ]

    题意: 给定 a b n找到满足ax+by=n 的x,y 令|x|+|y|最小(等时令a|x|+b|y|最小) 分析: 算法一定是扩展欧几里得. 最小的时候一定是 x 是最小正值 或者 y 是最小正值 ...

  4. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C.Ray Tracing (模拟或扩展欧几里得)

    http://codeforces.com/contest/724/problem/C 题目大意: 在一个n*m的盒子里,从(0,0)射出一条每秒位移为(1,1)的射线,遵从反射定律,给出k个点,求射 ...

  5. UVA 12169 Disgruntled Judge 枚举+扩展欧几里得

    题目大意:有3个整数 x[1], a, b 满足递推式x[i]=(a*x[i-1]+b)mod 10001.由这个递推式计算出了长度为2T的数列,现在要求输入x[1],x[3],......x[2T- ...

  6. UVA 10090 Marbles 扩展欧几里得

    来源:http://www.cnblogs.com/zxhl/p/5106678.html 大致题意:给你n个球,给你两种盒子.第一种盒子每个盒子c1美元,可以恰好装n1个球:第二种盒子每个盒子c2元 ...

  7. POJ 1061 青蛙的约会 扩展欧几里得

    扩展欧几里得模板套一下就A了,不过要注意刚好整除的时候,代码中有注释 #include <iostream> #include <cstdio> #include <cs ...

  8. 【64测试20161112】【Catalan数】【数论】【扩展欧几里得】【逆】

    Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到C ...

  9. poj 2891 扩展欧几里得迭代解同余方程组

    Reference: http://www.cnblogs.com/ka200812/archive/2011/09/02/2164404.html 之前说过中国剩余定理传统解法的条件是m[i]两两互 ...

随机推荐

  1. This is me

    This is me 爱琴棋 爱书画 也爱格物 爱跋山 爱涉水 也爱深林 This is me. 刘伯承的诗词有曰“高耸入云”,于是“李入云”便成为了我一生的标记,也造就了一个时而安静,时而疯狂的我 ...

  2. # linux读书笔记(3章)

    linux读书笔记(3章) 标签(空格分隔): 20135328陈都 第三章 进程管理 3.1 进程 进程就是处于执行期的程序(目标码存放在某种存储介质上).但进程并不仅仅局限于一段可执行程序代码( ...

  3. 一日游 + 进度psp

    假设我们全班同学及教师去吉林省吉林市1日游,请为这次活动给出规格说明书. 目录 1   引言 1.1   编写目的 1.2   项目背景 1.3   参考资料 2   需求分析 2.1   交通方式 ...

  4. final版本发布评价II

    其实我对技术上的问题了解不多,所以有些评语可能说的不对或者压根就没啥用.可直接忽略.请见谅. 1新蜂的俄罗斯方块,UI设计虽然给出了背景和颜色,但是感觉色彩对比也不好,模块之间也不协调.没有更多的说服 ...

  5. PAT 1064 朋友数

    https://pintia.cn/problem-sets/994805260223102976/problems/994805267416334336 如果两个整数各位数字的和是一样的,则被称为是 ...

  6. github建仓库注意

    在导入新的项目工程时,github建仓库时不要选择readme文件初始化仓库

  7. thinkphp在app接口开发过程中的通讯安全认证

    对于我们写好的接口,如果不经过安全认证就可以直接访问的话,则将对我们网站产生非常大的安全隐患,一些hack可能直接用你的接口去操作数据库,后果无法估量.那么如何才能进行有效的安全验证呢? 这里我采用了 ...

  8. 本地安装apk后直接打开,按下Home键再重新打开,然后按下返回键时页面展示错误的处理方法

    情景: 1.下载apk到手机本地,点击本地apk开始安装 2.安装完成后,一般会有 “完成” 和 “打开” 两个按钮,点击 “完成” 按钮时是没有问题的,不管它 3.点击 “打开” 按钮,进入到首页( ...

  9. Java 策略模式(Strategy)

    创建一个能够根据所传递的参数对象的不同而具有不同行为的方法 要执行的算法固定不变,封装到一个类(Context)中 策略就是传递进去的参数对象,它包含执行代码 策略接口 /** * 策略接口 */ p ...

  10. WebAPI框架里设置异常返回格式统一

    直接上代码 /// <summary> /// 消息代理处理,用来捕获这些特殊的异常信息 /// </summary> public class CustomErrorMess ...