这题题目意思看了好久,应该是给s代表三维坐标(x,y,z)里x+y+z=s,然后给a,b,c,让你求它给出的第二个式子的最大值是多少
先讨论特殊情况当a,b,c都是0的时候,那么这个时候x,y,z应该是随便填结果都是一样的,所以满足x+y+z=s等式就行了
其他情况我是按照a,b,c的比重分配的。。猜了一发就a了,莫名其妙,貌似可以用数学公式证明
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<stdlib.h>
#include<cmath>
#include<string>
#include<algorithm>
#include<iostream>
#include<stdio.h>
using namespace std;
#define ll long long
int main()
{
double s,a,b,c,x,y,z;
scanf("%lf%lf%lf%lf",&s,&a,&b,&c);
if(a+b+c==0)
{
printf("%.18lf 0 0",s);
return 0;
}
x=a*s/(a+b+c);
y=b*s/(a+b+c);
z=c*s/(a+b+c);
printf("%.18lf %.18lf %.18lf",x,y,z);
return 0;
}