#34571: 迴圈解(無陣列) C++ 4行


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [210.71.71.103]
最後登入時間 :
2024-04-29 10:55:17
k253. 庫存清理 (Stock) -- TOI練習賽202303新手組第1題 | From: [118.166.150.135] | 發表日期 : 2023-04-01 10:55

我的大致解法為,ans=0,跑一個for i range(4)的迴圈,每次加上不同折扣店家賺的錢到ans

這題有幾個不規律的地方:

1.      折扣為0.5, 0.6, 0.8, 0.9不是一個遞增數列,不過硬是想用迴圈解,也沒有一定要用陣列存這組數字
0, 1, 2, 3(迴圈的遞增值) 分別×1.5,得0, 1.5, 3, 4.5,無條件捨去再+5,就會是5, 6, 8, 9(再÷10.0就好),最後價格公式為:
(i*3>>1)/10.0+0.5

2.      t /= 5;
每種折扣能買得數量為t+1, t, t, t,這又要怎麼處理呢?
其實就是 t+(i==0) 而已,Java可以寫 t+(i==0?1:0)

3.      每次迴圈我還會執行s -= t+(i==0),當s < t+(i==0)時,就必須拿s去×價格,這邊也不用多做什麼判斷,就拿min( s, t+(i==0) ) × 價格 就好。

最後的結過為:
int t, s, p, ans=0, i=0;
cin>>t>>s>>p;
for(t/=5; i<4 && s>0; s-=購買人數, i++) ans += 購買人數 * 價格;
cout<<ans<<endl;

希望這篇解題報告能幫助到你^_^

 
ZeroJudge Forum