【tyvj 2038】诡异的数学题

在此先给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这种傻×自然不会做了,于是来向你请教…

输入格式 InputFormat
输入的第一行是一个正整数T,表示测资组数。
接着对每组测资,输入只有一行,三个正整数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,不然会错!
View Code

               

                    

原文地址:https://www.cnblogs.com/oxxxo/p/3389786.html