码迷,mamicode.com
首页 > 其他好文 > 详细

比赛--整理花园问题--解题报告

时间:2015-07-17 17:41:23      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:

整理花园问题

题目大意:

有三户人家共拥有一座花园,每户人家的太太均需帮忙整理花园。A 太太工作了5 天,B 太太则工作了4 天,才将花园整理完毕。C 太太因为正身怀六甲无法加入她们的行列,便出了90元。请问这笔钱如何分给A、B 二位太太较为恰当?A 应得多少元?90/(5+4)*5=$50 元?如果这么想你就上当了!正确答案是60 元。如果没想通的话再想想吧。
下面回答一个一般性的问题:假定A 太太工作了x 天,B 太太工作了y 天,C 太太出了90元,则A 太太应得多少元?输入保证二位太太均应得到非负整数元钱。三个太太工作效率相同。
友情提示:本题有个小小的陷阱哦。如果答案错的话,认真检查一下代码吧。
要求:
Input
输入第一行为数据组数T (T<=20)。每组数据仅一行,包含三个整数x, y, z (1<=x, y<=10,1<=z<=1000)。
Output
对于每组数据,输出一个整数,即A 太太应得的金额(单位:元)。样例输入:
Sample Input
2
5 4 90
8 4 123 
Sample Output
60
123 

注意提示:
如果使用浮点数,请小心误差,输出时尽量用四舍五入。

题目分析:
这是一道典型的数学问题。做题前首先要做出计算公式,找到公式后写程序就简单了。要想得到A太太所得的钱数,因为要考虑到浮点数为问题,根据计算得到公式
三人都做每人应做的天数s=(x+y)/3.0;A多做的天数a=x-s;B多做的天数b=y-s;C应该付给A的钱数pay=a/(a+b)*z。
程序代码:
 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 
 5 int T[20];
 6 int y[10];
 7 int z[1000];
 8 
 9 int main ()
10 {
11     int T;
12     scanf("%d",&T);
13     while(T--)
14     {
15     int x,y,z;
16     double a,b,s,pay;
17     
18     
19     scanf("%d%d%d",&x,&y,&z);
20     
21         s=(x+y)/3.0;      //三人都做每人应做的天数
22         a=x-s;            //A多做的天数
23         b=y-s;            //B多做的天数  
24         pay=a/(a+b)*z;    //C应付给A的钱数
25         int k=pay+0.5;    //将钱数四舍五入得到整数
26         cout<<k<<endl;
27     }
28     return 0;
29     
30 }

心得:
这道题看起来很简单,但就是在计算A应该得到多少钱时,总也找不到关系式,所以计算了很久。找到关系式后,程序很快就写完啦。算是一道很简单的题目。

觉得自己在思考方面还存在一些问题,下次应该更多做一些数学题,锻炼一下自己的思维能力。



 

比赛--整理花园问题--解题报告

标签:

原文地址:http://www.cnblogs.com/ttmj865/p/4654852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!