开心农场(“华为杯”山东理工大学第十一届ACM程序设计竞赛(热身赛)网络同步赛C题)

    xiaoxiao2023-10-29  159

    Problem Description

           小博小明和 小玉 是好朋友,他们有一片共同的农场,因此理应三个人共同打理。可是小玉 有事不在,因此只有小博和小明在农场中工作。小博工作了5 天,小明则工作了4 天,才将农场整理完毕。 小玉 因为无法帮助他们共同打理,感到十分的不好意思,于是便出了90元。请问这笔钱如何分给小博和小明较为恰当?小博 应得多少元?90/(5+4)*5=50 元?如果这么想你就上当了!正确答案是60 元。如果没想通的话再想想吧。

    下面我们来思考一个一般性的问题:假定小博工作了 x 天,小明工作了 y 天, 小玉 出了 z 元,则小博应得多少元?(题目保证答案一定为非负整数)三个人的工作效率相同。

    Input 输入第一行为数据组数T(T<=20)。每组数据仅一行,包含三个整数x,y,z(1<=x,y<=10,1<=z<=1000)

    Output 对于每组数据,输出一个整数,即小博应得的金额(单位:元)。

    Sample Input 2 5 4 90 8 4 123 Sample Output 60 123

    思路:其实就是小玉不在,他的三分之一工作量看小博帮忙干了多少。例如第一组样例,小博本应该干1/3,但它干了5/9,也就是帮小玉干了(5/9-1/3)=2/9,小明帮小玉干了(4/9-1/3)=1/9的,最后钱数按照2:1来分。

    #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <sstream> #include <cstdio> #include <vector> #include <string> #include <cmath> #include <stack> #include <queue> #include <map> #include <set> #define fori(a,b) for(int i=a;i<=b;i++) #define forj(a,b) for(int j=a;j<=b;j++) #define mem(a,b) memset(a,b,sizeof(a)) using namespace std; typedef long long ll; const int M=2e5+10; const int MAX=1e18+10; const double PI = acos(-1); vector<ll> v[11]; int main() { int t,i,j,x,y,z; cin>>t; while(t--) { cin>>x>>y>>z; int mu=x+y; int bei=mu/3; int xx=x-bei; int yy=y-bei; int zong=xx+yy; int ans=z*xx/zong; cout<<ans<<endl; } return 0; }

     

    最新回复(0)