[請問] 買東西的算法

作者: 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