[请问] 买东西的算法

楼主: areq (囧)   2019-12-03 17:33:47
8474元
要买165和107元的东西
要怎么算才会剩余最少钱
作者: Schottky (顺风相送)   2019-12-03 17:35:00
8474 - 165 - 107 = 8202 数字不是都定死了
作者: k721102 (口口口口口口)   2019-12-03 17:42:00
是我国文有问题吗!?
作者: robrob99 (梁龙)   2019-12-03 17:53:00
如果不是一楼的算法 那就是加一句不用找了
作者: lalaishiuan (lalashiuan)   2019-12-03 18:12:00
平均一点各买31剩42元
作者: andy90498 (枫情)   2019-12-03 18:12:00
我觉得他应该是要问说这两项东西各买多少个能够让剩下来的钱最少
作者: Workforme (目標當個業績轉機股)   2019-12-03 18:18:00
作业自己做
楼主: areq (囧)   2019-12-03 18:28:00
表达不清楚对不起,我是想问算法不是答案
作者: chungb (阿强一号)   2019-12-03 18:34:00
这难道没有2元一次方程式吗?
作者: cutemaumau   2019-12-03 18:34:00
答案是2, 165 28个, 107 36个, 我拉excel 矩阵以后再找出全表格内0~10的数字一个方程式 两个未知数 答案就是很多种组合 我只知道可以用try的. 或是写程式去跑也行 excel拉一下就有答案了
作者: andy90498 (枫情)   2019-12-03 18:37:00
这个就y=ax+b直线图的应用而已
作者: cutemaumau   2019-12-03 18:38:00
楼上我资质驽钝 看不出来这个题目可以用y=ax+b解
作者: andy90498 (枫情)   2019-12-03 18:43:00
作者: cutemaumau   2019-12-03 18:43:00
硬要公式表达的话会是这样 8474=165x+107y+z, xyz皆正整数, 但是这个公式我不知道怎么算 只能用try的
作者: andy90498 (枫情)   2019-12-03 18:44:00
solution的地方 X从1开始带代到第一个符合就可以了
作者: Schottky (顺风相送)   2019-12-03 18:45:00
...... 那还不是一样我也是用 cutemaumau 的方法,只是我用 OpenOffice Calc
作者: cutemaumau   2019-12-03 18:46:00
结果还是try XD
作者: MrSherlock (夏乐克)   2019-12-03 18:48:00
设:a、b、d∈Z,且(a,b)=d存在u、v∈Z,使得:d=ua+vb
作者: robrob99 (梁龙)   2019-12-03 18:50:00
没有完全分完的话 就只有多次测试了 顶多是减少测试范围
楼主: areq (囧)   2019-12-03 18:57:00
晕倒 为了把经费花完这么难...
作者: robrob99 (梁龙)   2019-12-03 18:58:00
把经费花完不是花超过一点 然后说明超过部分自行负担吗
作者: cutemaumau   2019-12-03 19:00:00
我刚拉excel不到5分钟, 不过经费多花的自己吸收就好啦
楼主: areq (囧)   2019-12-03 19:03:00
老板说要买这两样 我算165的买18个加107的买51个8427 余47元,po文是想问看看有没有更好的解
作者: MrSherlock (夏乐克)   2019-12-03 19:04:00
假设a个165元+b个107元的物品要去凑到最接近8474元用辗转相除法得到24a-37b=1 (甲),107a-165b=0 (乙)(甲)*8474-(乙)*1900 => 76a-38b=8474喔~我说错了XD 是用a去取代165,用b去取代107总之方程式的系数不能为负值76a-38b=8474 (丙) 无论怎么和(乙)线性组合都无法让系数为正整数,所以放弃,加上(甲) (8474-1元的意思然后幸运的可以在(丙)-(甲)*2时得到28a+36b=8472
作者: andy90498 (枫情)   2019-12-03 19:26:00
我找到一个比较像高中的解法了令8474-165x-107y=0 其中x是165的个数 y是107的个数得到一条直线 https://i.imgur.com/Qif0xd3.png当这条直线的其中一个点到原点(0,0)为最短距离时为所求 当然 算出来一定有小数 但非常接近整数最短距离=跟上图的直线垂直所以最短距离的直线方程式为 y=107/165x把这条直线带到最上面的方程式 得到X=36.01因为很接近36 所以x=36为所求再把36带到方程式8474-165x-107y≧0
楼主: areq (囧)   2019-12-03 19:38:00
@cutemaumau @andy90498 @MrSherlock 感谢各位热心回答,每人微薄500p奉上
作者: MrSherlock (夏乐克)   2019-12-03 19:45:00
收到~ 我就收下你的感谢了^^
作者: Ricestone (麦饭石)   2019-12-03 19:56:00
andy的算法得到的36并不是答案,最佳解的x是28
作者: OAzenO (すごいにゃ~)   2019-12-03 20:25:00
https://reurl.cc/NaEjLk 我列出来是这样啦
作者: MrSherlock (夏乐克)   2019-12-03 20:28:00
你(28,35)那边还有剩109元OuO
作者: Ricestone (麦饭石)   2019-12-03 20:28:00
你的109该多扣107,用mod算就可以了
作者: OAzenO (すごいにゃ~)   2019-12-03 20:30:00
乡民们 帮忙改一下吧XDmod公式是啥? =mod(x,y) 这样?
作者: Ricestone (麦饭石)   2019-12-03 20:35:00
mod((8474-x*165),107)x是165的个数
作者: syuan0729 (syuan)   2019-12-03 21:34:00
你要不要买165的50个加上107的两个,这样金额是8464,还有10块可以拿去买饮料XD
作者: dcjamesw (dcjamesw)   2019-12-05 15:06:00

Links booklink

Contact Us: admin [ a t ] ucptt.com