在此先给AK大神跪烂了。。。。。。。
iouzhou_101从NOI归来后文化课像坨屎,于是决定去补做一些作业,结果翻开作业的第一题就傻眼了:
设a、b、c为实数,且满足a+b+c=15,a^2+b^2+c^2=100,则a的最大值和最小值的积为____。
话说这题他都没有想出来怎么做,就开始自己YY,把这题牛逼成了:
设a1、a2、…、an为实数,且a1+a2+…+an=x,a1^2+a2^2+…+an^2=y,则a1的最大值和最小值的积为____。
liouzhou_101这种傻×自然不会做了,于是来向你请教…
设a、b、c为实数,且满足a+b+c=15,a^2+b^2+c^2=100,则a的最大值和最小值的积为____。
话说这题他都没有想出来怎么做,就开始自己YY,把这题牛逼成了:
设a1、a2、…、an为实数,且a1+a2+…+an=x,a1^2+a2^2+…+an^2=y,则a1的最大值和最小值的积为____。
liouzhou_101这种傻×自然不会做了,于是来向你请教…
输入格式 InputFormat
输入的第一行是一个正整数T,表示测资组数。
接着对每组测资,输入只有一行,三个正整数N、x和y,之间以一个空格隔开。
接着对每组测资,输入只有一行,三个正整数N、x和y,之间以一个空格隔开。
输出格式 OutputFormat
对于每组测资,输出只有一行,假若不存在满足题目要求的,就输出“WA RE CE TLE MLE OLE”(不含引号);否则输出一个精确到小数点后6位的浮点数,即a1的最大值和最小值的积。
样例输入
2
3 15 100
1 4 15
样例输出
8.333333
WA RE CE TLE MLE OLE
这题其实对学过均值不等式的来说挺简单的。。。
但是没学过的据说可以找规律,找出它的不等式(在次给g_word大神跪烂了)。。
均值不等式:
直接看下面两个就好了。
所以就求出来了:
由题目可以知道x-a[1]=(a[2]+a[3]+a[4]+....+a[n])
y-a[1]*a[1]=(a[2]*a[2]+a[3]*a[3]+...+a[n]*a[n])
由均值不等式可得 (x-a[1])/n<=sqrt((y-s[1]*a[1])/n)
可以得到n*a[1]*a[1]-2*x*a[1]+x2-(n-1)*y<=0
有解的话就是△>=0 没有就是△<0
然后我们的韦达公式a[1]min*a[1]max=c/a=(x2-(n-1)*y)/n
就可以求出来了。
1 var n,x,y,t,i:longint; 2 a,b,c:extended; 3 begin 4 assign(input,'maths.in'); reset(input); 5 assign(output,'maths.out'); rewrite(output); 6 readln(t); 7 for i:=1 to t do 8 begin 9 readln(n,x,y); 10 if n=1 then 11 begin 12 if sqr(x)<>y then writeln('WA RE CE TLE MLE OLE') else 13 writeln((y+0.000000000001):0:6); 14 end 15 else 16 begin 17 b:=-2*x; a:=n; c:=x*x-(n-1)*y; 18 if b*b-4*a*c>=0 then writeln((c/n):0:6) 19 else writeln('WA RE CE TLE MLE OLE'); 20 end; 21 end; 22 close(input); close(output); 23 end. 24 //注意a,b,c要用extended,不然会错!