zstuoj 4243 牛吃草
来源:互联网 发布:阿里云通用储值卡 编辑:程序博客网 时间:2024/04/30 14:18
点击打开 题目 链接
一道数学题,
弧adc将圆分成两半。
牛吃的那一部分面积即为扇形BCDA+扇形OAC-三角形AOB+三角形COB。
扇形面积公式S=(l*r)/2;
已知 l 、r。
设 R;能表示出 牛吃的草的面积。
从0-1e5 二分逼近求R。
#include<bits/stdc++.h>using namespace std;const int maxn=1010;const double eps=1e-8;const double pi=acos(-1.0);int dsgn(double x){ return x<-eps?-1:x>eps;}double area(double r,double R,double l){ if(dsgn(l-R-r)>=0) return 0; else if(dsgn(l-fabs(r-R)<=0)){ if(r>R) r=R; return pi*r*r; } double a=acos((l*l+r*r-R*R)/(2.0*l*r)); double b=acos((l*l+R*R-r*r)/(2.0*l*R)); double s1=a*r*r; double s2=b*R*R; double s3=cos(a)*r*sin(a)*r; double s4=cos(b)*R*sin(b)*R; return s1+s2-s3-s4;}int main(){ int T; double x0,y0,x1,y1,r; scanf("%d",&T); while(T--){ scanf("%lf%lf%lf%lf%lf",&x0,&y0,&x1,&y1,&r); x1-=x0,y1-=y0; double l=sqrt(x1*x1+y1*y1); double lt=0,rt=1e5; while(dsgn(rt-lt)>0){ double md=(rt+lt)/2.0; if(dsgn(2.0*area(r,md,l)-pi*r*r)>=0) rt=md; else lt=md; } printf("%.4lf\n",rt); }return 0;}
0 0
- zstuoj 4243 牛吃草
- zstuoj 4243 牛吃草
- zstu 4243 牛吃草(浮点数二分)
- 牛吃草问题
- 牛吃草问题
- 牛吃草问题
- 牛吃草问题
- 牛吃草(二分)
- 牛吃草 数论
- 牛吃草问题 (牛顿问题)
- 牛吃草问题的实例
- zstu 4243牛吃草(2016年新生赛暨全国新生邀请赛)
- zstuoj 4355
- 小学六年级奥数竞赛题:牛吃草问题
- [JZOJ5427]吃草
- String Game【ZSTUOJ--4212】
- Jug Hard【ZSTUOJ--4216】
- ZSTUOJ 4215 Landlocked
- POJ 1703 Find them, Catch them
- 一些debug的基本知识
- JS基础--事件(1)
- 重载delete时候,奇怪的问题
- Android安全攻防战,反编译与混淆技术完全解析(上)
- zstuoj 4243 牛吃草
- leetcode 389. Find the Difference
- 第13周项目3-Dijkstra算法的验证
- Recyclerview
- 1123 练习
- 粒子群算法(1)----粒子群算法简介
- HttpURLConnection post set params 设置请求参数的三种方法
- Qt实现基本QMainWindow主窗口程序
- Eclipse 自动生成注释信息