有三戶人家共擁有一座花園,每戶人家的太太均需幫忙整理花園。A 太太工作了5 天,B 太太則工作了4 天,才將花園整理完畢。C 太太因為正身懷六甲無法加入她們的行列,便出了90元。請問這筆錢如何分給A、B 二位太太較為恰當?A 應得多少元?90/(5+4)*5=$50 元?如果這么想你就上當了!正確答案是60 元。如果沒想通的話再想想吧。下面回答一個一般性的問題:假定A 太太工作了x 天,B 太太工作了y 天,C 太太出了90元,則A 太太應得多少元?輸入保證二位太太均應得到非負整數(shù)元錢。三個太太工作效率相同。友情提示:本題有個小小的陷阱哦。如果答案錯的話,認真檢查一下代碼吧。Input輸入第一行為數(shù)據(jù)組數(shù)T (T<=20)。每組數(shù)據(jù)僅一行,包含三個整數(shù)x, y, z (1<=x, y<=10,1<=z<=1000)。
Output對于每組數(shù)據(jù),輸出一個整數(shù),即A 太太應得的金額(單位:元)。
Sample Input25 4 908 4 123Sample Output60123Hint如果使用浮點數(shù),請小心誤差,輸出時盡量用四舍五入。
分析:
一道類似于腦筋急轉彎的小題,問題的關鍵是要意識到:三人共同打掃時,以任務均攤為原則,且效率相同的前提下,每個人的工作量均是總工作量的1/3,因此A、B兩位太太所做自己分內工作之外的工作,即為替C太太完成的任務,因此按勞分配所得占比(A:B)應為:A工作天數(shù)-總天數(shù)/3:B工作天數(shù)-總天數(shù)/3。
此外,應注意浮點數(shù)運算后四舍五入。
AC代碼:
#include <cstdio>#include <cmath> int main(){#ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout);#endif int t; float x,y,z; scanf("%d",&t); for(int i=0;i<t;i++) { scanf("%f %f %f",&x,&y,&z); int m=floor(z*(x/((x+y)/3)-1)+0.5); PRintf("%d/n",m); } return 0;}
新聞熱點
疑難解答