买东西买出个难题:
商品 A,价格 99 元,商品 B,价格 75 元,商家活动每单满 300-150 (可下任意单,自由组合 AB )。
问题:假设商品需求比例是 A:B = 1:4 (每买 1 个 1 就要买 4 个 B ),在只能购买 AB 两种商品且数量不限制的前提下,怎么下单购买单位成本最低?
(原以为是个简单问题,却被难住了)
各位大神,这个问题主要问题的不是最低成本是多少,而是如何求出最低成本的几算方法,还请大神们不要跑偏呀~~(试想如果可以套出一个算法,不是在双十一前造福人类的大善举嘛~~)
PS:题目里说的是每单,不是每满,顺便强调一下撒~~
感觉结案了,感谢 @coderluan,感谢大家。
1
cambria OP 目前的猜想是:1A3B 作为一单,多余的 B 每 4 个一单,那么 4A16B 就可以下 5 单( 1A3B * 4,4B * 1 ),综合成本是 211.5/组( 1A4B 为一组),但是不知道怎么抽象成数学问题,以及是否有穷举以外的证明方法。
|
2
chyou3 2019-10-10 13:42:37 +08:00 via Android
并不认为这是个算法问题,这应该是个关于你钱包厚度的问题
|
3
Rekkles 2019-10-10 13:45:04 +08:00
这个应该是求怎么搭配能达到用半价买商品的一个算法吧 二元二次方程?
|
4
maichael 2019-10-10 13:48:16 +08:00
能写成方程就能画图了吧,A 和 B 的数量是有关联的,所以应该可以画出 A 的数量和购买成本的关系图。
|
5
binux 2019-10-10 13:50:54 +08:00
当然是 A 买 100 个,B 买 400 个单位成本最低了啊
|
6
ayase252 2019-10-10 13:57:58 +08:00
显然,每一单的总价格是 300 的倍数的话单位成本是最低,找一个符合 99a + 75b=300n 的 a,b 作为每单的数量。
接下来,求下多少单能够满足 4n_a = n_b。 |
7
mainjzb 2019-10-10 13:58:09 +08:00
因为 4B = 300 满足唯一满减活动
显然此题在任何情况下,都能补充到最低价的 B 问题转为,如果以最低价购买到 A,且 B 能被量化为固定价格 37.5 满足套餐的优惠情况 4A 396-150 = 246 3A1B 375-150 =225 2A2B 348-150 =198 1A3B 324-150 =174 4B 300 B 能被量化为 37.5,可得每种情况下的 A 价格 1A3B A=61.5 2A2B A=61.5 3A1B A=62.5 4A A=61.5 事实证明。。无论你怎么凑单,价格都差不多。 |
10
coderluan 2019-10-10 14:04:43 +08:00
这个问题本身有问题啊,单位成本不能作为合算不合适的依据的:
因为在满 300-150 的前提下,最低单位成本就是 50%了,只要总价能被 300 整除,那样就能得到最低单位成本,直接买 300 件 A,1200 件 B,就满足这个条件了,不需要算法也不需要数学。 |
11
cambria OP @mainjzb 在不同的组合中 B 的量化价格是不固定的,4B 的时候是 37.5,3A1B 的时候,总价是 222,B 的量化成本应该是 75/372*222 约等于 44.76
|
13
mainjzb 2019-10-10 14:09:26 +08:00
1A3B *4 + 4B = 174*4 + 150 = 846
2A2B *2 + 4B *3 = 198*2 + 150*3 = 846 4A + 4B * 4 = 246+600=846 验算一下,显然正确 |
17
mainjzb 2019-10-10 14:14:10 +08:00
1A3B *4 + 4B = 4A16B
2A2B *2 + 4B *3 = 4A16B 4A + 4B * 4 = 4A16B 难道我数学不好? |
18
cambria OP @mainjzb 你这个计算方法说明的是:当总量为 4A16B 的情况下,有多种下单方式可以让总成本为 846,我想问的是,总量变化的情况下,如何得出最低单位成本
|
19
Vegetable 2019-10-10 14:19:29 +08:00
因为是每满 300-150,所以不存在拆单购买比一次购买所有更优惠的情况,最优解无论是怎么组合的,一单买完一定是最优惠的方案之一。
而最优方案就是半价,总价是 300 的整数倍即可。因为 1:4 且 4b=300,所以无论买多少份,b 都要自己独享对应份数的 300。在这种情况下,只要保证 N 份 A 是半价就可以了。即 NA % 99 = 0 时,总花费必然是半价。 99 和 300 的最小公倍数是=9900,N=33. 所以当份数为 33N 的时候,单位成本最低。 |
20
Vegetable 2019-10-10 14:20:26 +08:00
NA % 300 = 0
|
22
mainjzb 2019-10-10 14:26:38 +08:00
问题:假设商品需求比例是 A:B = 1:4 (每买 1 个 1 就要买 4 个 B ),在只能购买 AB 两种商品且数量不限制的前提下,怎么下单购买单位成本最低?
答: 4A16B = 846 所以 1A4B 最低单价就是 211.5 |
23
coderluan 2019-10-10 14:33:48 +08:00 1
@cambria 你这么说的话,楼上大家都搞错了,问题也简单了,因为 B 可以四个一组变成搭子 4B,所以问题可以先考虑 A 和 B 怎么组合超过 300 最少,结论是 1A3B,然后再考虑,最少买多少组 1A3B 加上搭子 4B 能满足 1:4 的比例就行了,
答案也有了,先按 1A3B 下单 4 次,再 4B 下单一次。 |
24
mainjzb 2019-10-10 14:38:56 +08:00
最低单价的几种方法就是我列出的
1A3B *4 + 4B = 174*4 + 150 = 846 2A2B *2 + 4B *3 = 198*2 + 150*3 = 846 4A + 4B * 4 = 246+600=846 每个都是 5 单,最低凑的都是 4A16B 结果。价格都最低价格。 |