(c语言)和与积的运算第一篇
喝汽水
某學院有m個學生參加南湖春游,休息時喝汽水。南湖商家公告:
(1)買1瓶汽水定價1.40元,喝1瓶汽水(瓶不帶走)1元
(2)為節約資源,規定3個空瓶可換回1瓶汽水,或20個空瓶可換回7瓶汽水
(3)為方便顧客,可先借后還。例如借1瓶汽水還3個空瓶,或借7瓶汽水還20個空瓶。
問m個學生每人喝1瓶汽水(瓶不帶走),至少需要多少元?
輸入正整數m,輸出至少需要多少元(精確到小數點后第2位)
1.求解思路
注意到春游喝汽水無需帶走空瓶,根據商家的規定作以下比較:
(1)如果人數為20人,買13瓶汽水,借7瓶汽水,飲完20瓶汽水后還20個空瓶(即相當
于換回7瓶汽水還給商家),兩清。此時每人花費為:
13/201.40=0.91元
(2)如果人數為3人,買2瓶汽水,借1瓶汽水,飲完3瓶汽水后還3個空瓶(即相當于換
回1瓶汽水還給商家),兩清。此時每人花費為
2/31.40=0.93元
(3)如果只有2人或1人,每人喝1瓶汽水(瓶不帶走),此時每人花費1元。
(4)注意到0.91<0.93<1,因而有以下的最省錢算法:
1)把m人分為x=m/20個大組,每組20人。每組買13瓶汽水(借7瓶汽水),飲完后還20空瓶,兩清。
2)剩下t=m-x20人,分為y=3個小組,每組3人。每組買2瓶汽水(借1瓶汽水),飲完3個空瓶,兩清。
3)剩下t=m-x20-y*3人,每人花1元喝1瓶。
*該算法得所花費用最低為:
(13x+2y)1.40+t元
代碼:
#include<stdio.h> int main() {long n,m,y,x;scanf("%ld",&m);x=m/20;t=m-x*20;y=t/3;t=m-20*x-3*y;printf("%ld\n",(13*m+3*y)*1.40+t);return 0; }總結
以上是生活随笔為你收集整理的(c语言)和与积的运算第一篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用ExayX在VS2019上输出文本有误
- 下一篇: (c语言)和与积的运算第二篇