※我的大致解法為,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;
希望這篇解題報告能幫助到你^_^