样例给的那个0.29就是面积的比例嘛,如果知道精确的比例,乘以面积就是答案了。只不过小数点后面还有8位需要确定。。。
题目说这是一道小学奥数题,我感觉这难度怎么说也应该是初中奥数题吧。
思考了一会然后发现自己竟然连小学奥数题都不会做。
然后我就开始思考自己和小学生究竟有什么区别。
然后开始思考数学竞赛和算法竞赛究竟有什么区别。
然后觉得可以尝试用投点法来模拟出这个面积的比例。
然后跑了一分钟,得到一个小数,但是多次实验后发现只能精确到小数点后4位。
然后只好利用计算机丰富的数学库函数强行算了出来。
主要是有反余弦函数配合余弦定理,很多东西都可以强行算了。
算法竞赛和数学竞赛还是不同的。
看来我和小学生还是略有不同的。
代码
#include<stdio.h>
#include<math.h>
#define a ((5+sqrt(7))/8)
#define b ((5-sqrt(7))/8)
#define c sqrt(2*(a-b)*(a-b))
#define o1 acos(1-c*c/2)
#define o2 acos(1-2*c*c)
#define PI acos(-1)
#define A (5+sqrt(7))
#define B (sqrt(7)-5)
#define FM sqrt(A*A+B*B)
#define FZ fabs(A/2+B/2)
#define DI (FZ/FM)
#define D sqrt(a*a+b*b)
#define A1 (DI*D)
#define A2 (o1/2)
#define A3 (o2/8)
#define ANS (A3+A1-A2)
using namespace std;
double cul(int x)
{
return x*x*ANS;
}
void solve()
{
int N;
scanf("%d",&N);
printf("%.2lf\n",2*cul(N));
}
int main()
{
int T;
scanf("%d",&T);
while(T--) solve();
return 0;
}