题目链接:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=10574#problem/A
首先介绍一下相关知识:
tan(a+b)=(tan(a)+tan(b))/(1-tan(a)*tan(b));
反正切函数一般用来求PI:
PI=4×arctan(1)=4*(1-1/2-1/3-1/5-1/7。。。。);
此方法消费太多时间。。。
我们可以用另外一种方法来求:
先说明关于arctan的一些运算:
tan(arctana)=a
arctan(-x)=-arctanx
arctan A + arctan B
=arctan(A+B)/(1-AB)
arctan A - arctan B
=arctan(A-B)/(1+AB)
arctanA+arctan(1/A)
=π/2
反三角函数在无穷小替换公式中的应用
当x→0时,arctanx~x
令A=1/2;B=1/3;
则arctan1=arctan1/2+arctan1/3;
使用1/2和1/3的反正切来计算arctan(1),速度就快多了;
好了,回归本题:
arctan(1/a)=arctan(1/b)+arctan(1/c);
=arctan((1/b+1/c)/(1-1/b*c))
=arctan((b+c)/(bc-1))
所以有:1/a=(b+c)/(bc-1)=>(b-a)*(c-a)=a*a+1;
所以(b-a)和(c-a)是a*a+1的因子,因此只要搜索因子就可以了
代码就不贴了。。。。