POJ2142-The Balance【扩欧】
前言
感谢x某q的帮助
这是它的博客(只有找本人才会解释的博客):
https://blog.csdn.net/sugar_free_mint/article/details/80755188
正题
题目链接:
http://poj.org/problem?id=2142
大意
有三种东西,重量不同,A种只能放左边;B种只能放右边;C种只有一个,两边都可以放。A和B随便放多少个都行但是C必须放,要求两边重量相等。求在满足放的东西最少,之后满足重量最小的放置方案
解题思路
首先推出公式
然后移项得
然后是不是又有些眼熟,没错了就是扩欧ax+by=cax+by=c。之后我们发现我们之前那个(x∗((b−a)/d)%(k/d)+(k/d))%(k/d)(x∗((b−a)/d)%(k/d)+(k/d))%(k/d)的公式如果既求x又求y的话就会不成立。
然后就场外求助用一种方法,用最小的x来求y和用最小的y来求x之后可以判断那个更优。
代码
#include<cstdio>
#include<algorithm>
using namespace std;
int x,y,a,b,c,x1,y1,x2,y2;
int gcd(int a,int b)
{if (b==0){x=1;y=0;return a;}int d=gcd(b,a%b),k=x;x=y;y=k-(a/b)*y;return d;
}
int main()
{while (true){scanf("%d%d%d",&a,&b,&c);if (a==0&&b==0&&c==0) return 0;int gcde=__gcd(a,b);a/=gcde;b/=gcde;c/=gcde;//提前除去方便些int d=gcd(a,b),g=b;x1=(x*c%b+b)%b;//求最小的xy1=(a*x1-c)/b;//算出yif (y1<0) y1=-y1;//确定是那个公式y2=(y*c%a+a)%a;//求最小yx2=(b*y2-c)/a;//算出xif (x2<0) x2=-x2;//确定公式if (x1+y1<x2+y2) printf("%d %d\n",x1,y1);else printf("%d %d\n",x2,y2);//比较方案}
}
转载于:https://www.cnblogs.com/sslwyc/p/9218505.html
POJ2142-The Balance【扩欧】相关推荐
- bzoj3122 [Sdoi2013]随机数生成器(bsgs+扩欧+数列)
Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意 ...
- jzoj1158-荒岛野人【扩欧,gcd,同余方程】
正题 大意 有n个野人,每个野人有一个初始山洞CiCiC_i,每次向前移动距离PiPiP_i,寿命LiLiL_i,如果野人走到了最后一个山洞那么继续就好回到第一个山洞,求至少多少个山洞才可以让野人们不 ...
- P1082-扩欧模板同余方程【扩欧,数论】
正题 链接: https://www.luogu.org/record/show?rid=7914999 大意 就是 ax≡1(modb)ax≡1(modb) ax≡1(modb) 给出a和b求x 解 ...
- SGU - 106 The equation(扩欧+细节处理)
传送门 题目大意 给出 a x + b y + c = 0 ax+by+c=0 ax+by+c=0这一二元一次不定方程,求满足 { ( x , y ) ∣ x ∈ [ l x , r x ] , y ...
- POJ - 2142 The Balance(扩展欧几里得)
题目链接:点击查看 题目大意:给出两种重量的砝码,我们需要利用天平称出指定重量的药物,我们需要求出这两种砝码各自的数量,使得砝码数量之和最小 题目分析:我们可以先列出关系式,假设两个砝码的重量分别为a ...
- P1516-青蛙的约会【扩欧,同余方程】
#正题 链接: https://www.luogu.org/record/show?rid=7935281 ##大意 两只青蛙往相同方向绕圈,A蛙一次跳n米在x出发,B蛙一次跳m米在y出发,一圈长度L ...
- POJ2115-C Looooops【扩欧,同余】
正题 链接: http://poj.org/problem?id=2115 大意 就是给出个循环 for(i=A;i!=B;i=(i+C)mod2k)for(i=A;i!=B;i=(i+C)mod2k ...
- (扩)欧几里得的一些见解
a x + b y = g c d ( a , b ) g c d ( a , b ) = g c d ( b , a % b ) 首 先 证 明 上 面 这 个 柿 子 假 设 d = g c d ...
- 【扩展欧几里得】Bzoj 1477:青蛙的约会
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
最新文章
- mSystems:生物地球化学进入病毒时代-采用多样的方法研究病毒和生物地球化学循环...
- 获得连接对象 jdbc 20210412_204123.mp4
- ZZULIOJ21级新生周赛(1)——命题人:朱会东老师——2822: 探姬粉丝众多
- Data - 大数据生态圈
- Redis(二)原理以及主从复制的实现
- 介绍 JavaScript 中的闭包、局部变量(局部作用域)和私有变量等内容
- 骁龙888打开“新象限” ,专业相机和游戏机直呼不讲武德
- 健康计划 用户输入身高(m),体重(kg) 计算公式:BMI = 体重 / 身高^2 BMI < 18.5:过轻 18.5≤ BMI <24:正常 24 ≤ BMI <27:过重 27
- 《实时控制软件设计》第二个编程作业
- 什么是百度SEO?百度SEO优化怎么做?
- OpenGL 镜面反射光
- 赛灵思 Xilinx UG1387 - Versal ACAP 硬件、IP 和平台开发方法指南(中文版) (v2020.2)
- 技术美术个人笔记(一)——贴图间参数
- Java学习笔记之五:Nexus配置为强制从maven私服下载
- JDK1.8(jdk8)的下载与安装
- Linux防火墙操作firewall、iptable
- macOS pyinstaller打包python程序, subprocess无法运行
- 桌面计算机安全自查报告,关于计算机安全检查的自查报告
- 微信小程序连接oracle数据库,【微信小程序】关于微信小程序中跳转传参数与传对象的解析...
- 谷牛期权:铜期权波动率正当时
热门文章
- js如何同时打开多个信息窗口 高德地图_高德地图显示单个窗体和显示多个窗体的方法...
- Bit-Z转入GXS、PPS、SPHTX、EOS未到账解决方案
- 【译】Construction of a Plasma Chain 0x1
- Android系统启动-init篇
- html中after伪类原理,css :after伪类+content使用说明和方法
- python数据分析第七章实训3_《利用Python进行数据分析·第2版》第7章 数据清洗和准备7.1 处理缺失数据7.2 数据转换7.3 字符串操作7.4 总结...
- JZOJ 5977. 【清华2019冬令营模拟12.15】堆
- JZOJ 5434. 【NOIP2017提高A组集训10.30】Matrix
- JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
- oracle临时表空间大小查询,查看oracle 系统临时表空间、undo表空间、SGA和PGA大小...