hdu 5120 (求两圆相交的面积
题意:告诉你两个圆环,求圆环相交的面积。
/* gyt
Live up to every day */
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<cstring>
#include<queue>
#include<set>
#include<string>
#include<map>
#include <time.h>
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef double db;
const int maxn = ;
const ll maxm = 1e7;
const ll mod = 1e9 + ;
const int INF = 0x3f3f3f;
const ll inf = 1e15 + ;
const db eps = 1e-;
int a1, b1, a2, b2; db getArea(int a, int b) {
db sa, sb;
db d=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));
db rr=min(a, b);
db area=;
if (d<=abs(a-b)) area=acos(-1.0)*rr*rr; //内含或者内切
else if (d>=a+b) area=0.0; //外切或不相交
else { //相交求面积
db p=(a+b+d)/2.0; //海伦公式里边的P
db sa=acos((a*a+d*d-b*b)/(2.0*a*d)); //c^2=a^2+b^2-2*a*b*cos;求出圆心角
db sb=acos((b*b+d*d-a*a)/(2.0*b*d));
area=sa*a*a+sb*b*b-*sqrt(p*(p-a)*(p-b)*(p-d)); //两个扇形面积和就减去三角形面积,得相交部分面积
}
return area;
}
void solve() {
static int ca=;
int R, r;
scanf("%d%d%d%d%d%d", &R, &r, &a1, &b1, &a2, &b2);
db s1=getArea(R, R), s2=getArea(r, r), s3=getArea(R, r);
db sum=;
if (R>r) sum=s1-*s3+s2;
else sum=s2-*s3+s1;
printf("Case #%d: %.6f\n", ca++, sum);
}
int main() {
int t = , cas = ;
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
scanf("%d", &t);
while(t--) {
solve();
}
return ;
}
hdu 5120 (求两圆相交的面积的更多相关文章
- POJ 2546 & ZOJ 1597 Circular Area(求两圆相交的面积 模板)
题目链接: POJ:http://poj.org/problem? id=2546 ZOJ:problemId=597" target="_blank">http: ...
- 求两圆相交部分面积(C++)
已知两圆圆心坐标和半径,求相交部分面积: #include <iostream> using namespace std; #include<cmath> #include&l ...
- hdu5858 Hard problem(求两圆相交面积)
题目传送门 Hard problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 两圆相交求面积 hdu5120
转载 两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: ...
- hdu 5120 Intersection 两个圆的面积交
Intersection Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) P ...
- POJ 2546 Circular Area(两个圆相交的面积)
题目链接 题意 : 给你两个圆的半径和圆心,让你求两个圆相交的面积大小. 思路 : 分三种情况讨论 假设半径小的圆为c1,半径大的圆为c2. c1的半径r1,圆心坐标(x1,y1).c2的半径r2,圆 ...
- hdu 3264(枚举+二分+圆的公共面积)
Open-air shopping malls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- [hdu 3264] Open-air shopping malls(二分+两圆相交面积)
题目大意是:先给你一些圆,你可以任选这些圆中的一个圆点作圆,这个圆的要求是:你画完以后.这个圆要可以覆盖之前给出的每一个圆一半以上的面积,即覆盖1/2以上每一个圆的面积. 比如例子数据,选左边还是选右 ...
- poj2546Circular Area(两圆相交面积)
链接 画图推公式 这两种情况 都可用一种公式算出来 就是两圆都求出圆心角 求出扇形的面积减掉三角形面积 #include <iostream> using namespace std; # ...
随机推荐
- 统计请求最高的TOP 5
cat access.log |awk -F "," '{print$14}'|awk -F "\"" '{print$4}'|sort |uniq ...
- 二叉树的镜像(python)
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
- 第四章 栈与队列(c4)栈应用:中缀表达式求值
- JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等
概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...
- Disruptor底层实现讲解与RingBuffer数据结构讲解
Disruptor术语 RingBuffer:被看作Disruptor最主要的组件,然而从2.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用 ...
- cloud server ribbon 自定义策略配置
虽然ribbon默认为我们提供了多钟负载均衡策略,但有时候我们仍然需要自定义符合自身业务逻辑的规则 使用配置文件的方式:我们只需要在配置文件中添加配置 serviceId.ribbon.NFLoadB ...
- SpringCloud 启动时报No active profile set, falling back to default profiles default
这在Spring程序启动时没有找到默认的配置文件所引发的错误,默认文件application.yml如下图: 一般在项目中都会有多个,如有正式环境.测试环境等.如下图: 根据上面这种多个配置的只需要 ...
- sqlserver DBA面试题
1.sqlserver 2008 R2 on windows server 2008 R2群集中,有节点A.B,现在需要停机新添加一个节点C进来替换现有节点B,请列出必要的步骤. 2.sqlserve ...
- linux服务器搭建
centos7 java web项目环境搭配 2018年07月19日 17:20:21 阅读数:25 首先进行系统安装,此处不进行详细介绍,自行百度安装 一.配置ip地址信息 1.进入/etc/sys ...
- Js或 Activex 控件调用打印预览等操作
<input value="打印" type="button" onclick="javascript:window.print()" ...