题目链接:http://lightoj.com/volume_showproblem.php?problem=1118

给你两个圆的半径和圆心,求交集的面积;

就是简单数学题,但是要注意acos得到的都是小于180度的角,所以这里要注意一下,不要求整个角,求一半的大小;这点让我错的惨不忍睹;

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <string>
  5. #include <vector>
  6. #include <algorithm>
  7. #include <map>
  8. #include <queue>
  9. #include <stack>
  10. #include <math.h>
  11.  
  12. using namespace std;
  13.  
  14. #define met(a, b) memset(a, b, sizeof(a))
  15. #define N 1053
  16. #define INF 0x3f3f3f3f
  17. #define PI 4*atan(1)
  18. const int MOD = ;
  19.  
  20. typedef long long LL;
  21.  
  22. int main()
  23. {
  24. int T, t = ;
  25. scanf("%d", &T);
  26. while(T--)
  27. {
  28. double r1, r2, x1, x2, y1, y2;
  29.  
  30. scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &r1, &x2, &y2, &r2);
  31.  
  32. double d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
  33.  
  34. if( d >= r1+r2 )///相离或相切
  35. {
  36. printf("Case %d: %.6f\n", t++, 0.0);
  37. continue;
  38. }
  39. if(d <= fabs(r1-r2))///内含;
  40. {
  41. printf("Case %d: %.6f\n", t++, PI*min(r1, r2)*min(r1, r2));
  42. continue;
  43. }
  44.  
  45. double a = acos((r1*r1+r2*r2-d*d)/(*r1*r2));
  46. double s = sin(a)*r1*r2;///四边形面积
  47. double b = acos((r1*r1+d*d-r2*r2)/(*r1*d));
  48. double s1 = b * r1 * r1;///r1这边的扇形面积;
  49. double c = acos((r2*r2+d*d-r1*r1)/(*r2*d));
  50. double s2 = c * r2 * r2;///r2这边的扇形面积;
  51. double ans = s1 + s2 - s;
  52.  
  53. printf("Case %d: %.7f\n", t++, ans);
  54. }
  55. return ;
  56. }
  57. /*
  58. Input:
  59. 5
  60. 0 0 1 10 10 1
  61. 0 0 10 0 0 5
  62. -862 823 894 -667 402 663
  63. 548 518 145 119 828 620
  64. 777 499 712 479 314 967
  65.  
  66. Output:
  67. Case 1: 0.0
  68. Case 2: 78.5398163397
  69. Case 3: 1139058.0639436883
  70. Case 4: 56622.85922574766
  71. Case 5: 1513681.0685423985
  72. */

LightOj 1118 - Incredible Molecules(两圆的交集面积)的更多相关文章

  1. LightOJ 1118 - Incredible Molecules (两圆面积交)

    1118 - Incredible Molecules   PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit: ...

  2. LightOJ 1118--Incredible Molecules(两圆相交)

    1118 - Incredible Molecules      PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Lim ...

  3. POJ 2546 &amp; ZOJ 1597 Circular Area(求两圆相交的面积 模板)

    题目链接: POJ:http://poj.org/problem? id=2546 ZOJ:problemId=597" target="_blank">http: ...

  4. 求两圆相交部分面积(C++)

    已知两圆圆心坐标和半径,求相交部分面积: #include <iostream> using namespace std; #include<cmath> #include&l ...

  5. codeforce gym/100495/problem/K—Wolf and sheep 两圆求相交面积 与 gym/100495/problem/E—Simple sequence思路简述

    之前几乎没写过什么这种几何的计算题.在众多大佬的博客下终于记起来了当时的公式.嘚赶快补计算几何和概率论的坑了... 这题的要求,在对两圆相交的板子略做修改后,很容易实现.这里直接给出代码.重点的部分有 ...

  6. 两圆相交求面积 hdu5120

    转载 两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: ...

  7. hdu 5120 (求两圆相交的面积

    题意:告诉你两个圆环,求圆环相交的面积. /* gyt Live up to every day */ #include<cstdio> #include<cmath> #in ...

  8. hdu5858 Hard problem(求两圆相交面积)

    题目传送门 Hard problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  9. HDU 6354--Everything Has Changed(判断两圆关系+弧长计算)

    题目 题意:首先给定一个以原点为圆心,R为半径的圆,之后在给m个圆,这些圆可能会和原来的圆有所交集,计算开始的圆剩余区域的周长,不包括内部周长. 首先判定两圆关系,如果内含,直接加上圆的周长,如果相交 ...

随机推荐

  1. SaltStack salt-ssh 用法

    以下在 master 操作: (1) 我们在安装部署 SaltStack 的时候,需要安装 salt 客户端,还要与 salt 服务端进行认证才能互相通信(2) 如果我们使用 salt-ssh 的方式 ...

  2. Linux man 命令

    man命令可以用来查看Linux命令的帮助信息 .配置文件的帮助信息等等,通过不同的代号可以查看不同的帮助信息: 代号 含义 1 查看Linux命令的帮助信息(默认) 2 查看内核提供的函数的帮助信息 ...

  3. Unity Shader 自定义纹理坐标变量写法

    Properties { _R(,)) = 1.0 _ColorTex("ColorTex (RGB)", 2D) = "red" {} struct Inpu ...

  4. osg剔除背面开启

    //设置背部剔除看不见背面东西 osg::ref_ptr<osg::CullFace> cullface=new osg::CullFace(osg::CullFace::BACK); s ...

  5. CharacterMotor_刚体角色驱动

    using UnityEngine; //this class holds movement functions for a rigidbody character such as player, e ...

  6. linux系统开机自启程序-需要-root用户 -启动 -

    #!/bin/bashsh /home/hwjc/RSA/release2017-02-23/release2017-02-23/install.shsh /etc/init.d/mqtt.shifc ...

  7. JavaScript的格式--从格式做起,做最严谨的工程师

    1.JavaScript的格式: JavaScript区分大小写: JavaScript脚本程序须嵌入在HTML文件中: JavaScript脚本程序中不能包含HTML标记代码:(双引号) 每行写一条 ...

  8. 服务器搭建--Linux安装erlang

    1.安装依赖环境: 1)安装GCC GCC-C++ Openssl等模块,安装过就不需要安装了 yum -y install make gcc gcc-c++ kernel-devel m4 ncur ...

  9. 【jquery基础】 jquery.manifest用法:通过后台查询and添加到默认项

    今天做一个东西 效果如下: 后台已经保存了006这个SN码,现在需要查到了这个人(杨小婷),然后作为默认值,展示到 manifest 里面 <script> $(document).rea ...

  10. css笔记 - 张鑫旭css课程笔记之 line-height 篇

    一.line-height line-height: 指两行文字基线之间的距离. 行高200px表示两行文字基线之间的距离是200px: 二.基线:baseline 字母x下边缘的位置 基线是任意线定 ...