题意:有两种砝码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. [转]Angular2 使用管道Pipe以及自定义管道格式数据

    本文转自:https://www.pocketdigi.com/20170209/1563.html 管道(Pipe)可以根据开发者的意愿将数据格式化,还可以多个管道串联. 纯管道(Pure Pipe ...

  2. ABP Zero项目入门踩坑

    1.下载ABP项目模板, 打开网址https://aspnetboilerplate.com/Templates,选择MultiPage Web Application,输入项目名称和验证码,即可点击 ...

  3. MVC架构介绍——自运行任务

    实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download 通过自运行任务来调度及执行程序中需要定时触发或处理的一 ...

  4. c# Datatable导出Excel

    using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; ...

  5. Centos7 firewalld 基本使用

    Centos7 的防火墙 firewalld比较常见 简单介绍使用 详细介绍链接推荐:   https://blog.csdn.net/buster_zr/article/details/806049 ...

  6. C# 特性学习笔记

    1.自己定义的特性 注意注释!!!!! 2.使用特性 3.特性的用处

  7. Runtime和Process

    private void runByshcommand(String command) { try { System.out.println("开始执行命令....."); Pro ...

  8. 【代码笔记】Web-ionic-表单和输入框

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  9. 【读书笔记】iOS-对iOS应用进行模糊测试

    一,模糊测试,是指通过反复向待测应用发送畸形的数据,对应用进行动态测试的过程. 二,模糊测试,也称动态分析,是一种构造非法输入并将其提供给应用,以期让应用暴露出某些安全问题的艺术和科学. 参考资料:& ...

  10. linux定时任务调度定系统——opencron

    linux定时任务调度定系统——opencron https://gitee.com/terrytan/opencron/#%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83 一 ...