之前排版炸了,麻烦重新审核
题目让求这个二元二次方程组:
\[ \begin{cases} m+n=d\\ mn=d \end{cases} \]
想到韦达定理,于是构造了这个方程(其中\(m\),\(n\)是这个方程的两个根)
\[ ax^2+bx+c=0 \]
其中\(d=-\frac{b}{a}=\frac{c}{a}\)(根据韦达定理)
将方程两边同除以\(a\),得:
\[ x^2+\frac{b}{a}x=-\frac{c}{a} \]
观察一下,想到配方这样就能将\(x\)降次
\[ x^2+\frac{b}{a}x+(\frac{b}{2a})^2=-\frac{c}{a}+(\frac{b}{2a})^2 \]
\[ (x+\frac{b}{2a})^2=-\frac{c}{a}+\frac{b^2}{4a^2} \]
于是我们就能开心的将它变为一次:
\[ x=\pm\sqrt{-\frac{c}{a}+\frac{b^2}{4a^2}}-\frac{b}{2a} \]
再把\(-\frac{b}{2a}\)套到根号里面去
\[ x=\pm\sqrt{-\frac{4ac}{4a^2}+\frac{b^2}{4a^2}}-\frac{b}{2a} =\frac{\pm\sqrt{b^2-4ac}-b}{2a} \]
终于,我们算出了答案
\[ \begin{cases} m=\frac{\sqrt{b^2-4ac}-b}{2a}\\\ n=\frac{-\sqrt{b^2-4ac}-b}{2a} \end{cases} \]
此时还有一个问题,就是将\(a\),\(c\),\(b\)用\(d\)来表示
得出方程
\[ \begin{cases} -\frac{b}{a}=d\\\ \frac{c}{a}=d \end{cases} \]
此时,我们不妨设\(a=1\),你设什么都没问题的,\(1\)好算QWQ
于是乎:
\[ \begin{cases} a=1\\\ b=-d\\\ c=d \end{cases} \]
让我们来愉快地带入吧:
\[ \begin{cases} m=\frac{\sqrt{d^2-4d}+d}{2}\\\ n=\frac{-\sqrt{d^2-4d}+d}{2} \end{cases} \]
大家都知道,在实数范围内根号下不能是负数
得出结论
当\(d^2-4d\ge0\)时,有解
当\(d^2-4d<0\)时,无解
code(说实话,我是敲完题解再去写代码的):
#include<cstdio> #include<cmath> #define F double int t,d; int main(){ scanf("%d",&t); while(t--){ scanf("%d",&d); if(int(sqrt(pow(d,2)-4*d))<0){//注意,这里要转int printf("N\n"); }else{ printf("Y "); printf("%.9lf %.9lf\n",F(F(sqrt(pow(d,2)-4*d)+d)/2),F(F(-sqrt(pow(d,2)-4*d)+d)/2)); } } return 0; }