5858 Hard problem (数学)

来源:互联网 发布:淘宝花呗额度怎么提升 编辑:程序博客网 时间:2024/05/16 21:06

网上解释很详细

/* ***********************************************Author        :angon************************************************ */#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define showtime fprintf(stderr,"time = %.15f\n",clock() / (double)CLOCKS_PER_SEC)#define lld %I64d#define REP(i,k,n) for(int i=k;i<n;i++)#define REPP(i,k,n) for(int i=k;i<=n;i++)#define scan(d) scanf("%d",&d)#define scanl(d) scanf("%I64d",&d)#define scann(n,m) scanf("%d%d",&n,&m)#define scannl(n,m) scanf("%I64d%I64d",&n,&m)#define mst(a,k)  memset(a,k,sizeof(a))#define LL long long#define N 1005#define mod 1000000007inline int read(){int s=0;char ch=getchar();for(; ch<'0'||ch>'9'; ch=getchar());for(; ch>='0'&&ch<='9'; ch=getchar())s=s*10+ch-'0';return s;}const double PI = acos(-1);int main(){    //freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);    int t;    double a;    //printf("%lf\n",2*sqrt(5));    scan(t);    while(t--)    {        scanf("%lf",&a);        a=a/2;        double A = acos(3.0/4);        double B = acos(5.0*sqrt(2)/8.0);        double C = 45.0/180.0*PI;        double s1 = 0.5*(a+2*a)*a - 0.5*2*a*a*sin(A) - (C- B)/2*4*a*a - (A + B - C)/2*a*a;        double s = (4-PI)*a*a - (4-PI)/4*a*a - 2*s1;        printf("%.2lf\n",s*2);    }    return 0;}


0 0