A.Eming
Eming is a contest hold by WHUACM trainingteam. The aim is to select new members of the team.
Usually, the first problem is a very simpleproblem such as “a+b problem”. But this time, Xioumu is tired of this kind of problem,he decide to solve “a and b problem”.
Give you the result of a + b and a^2 – b^2,please output the result of a and b.
Input
There are several test cases. For each casethere are two double numbers indicating a+b and a^2-b^2. You may assume that a+bwill not be zero.
Output
For each case please output the result of aand b in one line, rounded to 2 decimal places.
SampleInput
3 -3
SampleOutput
1.00 2.00
----------------------------------------------------------------------------------------------------------
解题报告:
设 输入的 x,y 是(x=a+b,y=a^2-b^2);
1) y=a^2-b^2=(a-b)*(a+b)=(a-b)*x(x!=0)
2) a-b=y/x
3) a=(x+y/x)/2=x/2+y/2/x;
4) b=x-a=(x-y/x)/2=x/2-y/2/x;
优化:
为减少运算次数,设xx=x/2; yy=y/2/x;
则:a=xx+yy; b=xx-yy;
----------------------------------------------------------------------------------------------------------
代码:
#include<stdio.h>
int main()
{
double x,y,xx,yy;
while( EOF != scanf("%lf%lf",&x,&y) )
{
xx=x/2;
yy=y/2/x;
printf("%.2lf %.2lf\n",xx+yy,xx-yy);
}
return 0;
}