乡镇门户网站建设的现状及发展对策,那些做电影的网站赚钱吗,360安全浏览器官网入口,分析对手网站的优化方法#x1f4da;Description:
直角坐标系内现有两个半径相等的圆#xff0c;问两圆的位置关系。
位置关系有#xff1a;重合#xff0c;相切#xff0c;相离#xff0c;相交#xff1b;
若两圆相交#xff0c;需要求出两圆的重叠面积。 ⏳Input:
输入包含多组数据Description:
直角坐标系内现有两个半径相等的圆问两圆的位置关系。
位置关系有重合相切相离相交
若两圆相交需要求出两圆的重叠面积。 ⏳Input:
输入包含多组数据每组数据为一行包括5个实数x1,y1,x2,y2,r分别代表第一个圆圆心的横纵坐标第二个圆圆心的横纵坐标以及它们的半径-20 x1,y1,x2,y2,r 20。 Output:
对于每组数据输出占一行位置关系有重合相切相离相交若两圆相交则继续输出一个空格再输出两圆的重叠面积面积保留2位小数 Sample Input: 0 0 0 0 1 0 0 1 0 0.5 0 0 1 0 0.3 0 0 1 0 1 Sample Output: 重合 相切 相离 相交 1.23 思路
本题关键在于两个圆心距离和半径的对比 本题设置了两个半径相同的圆 简化了一定的难度 通过比较半径和圆心距离可以直接划分出四种状态 其中相交状态下需要计算面积
重叠面积具体介绍如下 假设是半径为r的两个圆相交 因为半径相等所以从各种情况都可以视为O1和O2在同一水平线上为了方便计算 且O1AO2B一定是一个菱形 接下来就是面积的计算 ⭐重叠的面积其实就是两个扇形面积减去菱形面积⭐ 注意C语言中弧度与角度的转换 注意C语言中弧度与角度的转换 注意C语言中弧度与角度的转换 AC Code
#include stdio.h
#include math.h
#define PI 3.1415926int main(){double x1,y1,x2,y2,r;double len; //记录两个圆心的距离 while(scanf(%lf%lf%lf%lf%lf,x1,y1,x2,y2,r)!EOF){float m; //角度 float s; //重合面积 len sqrt((x1-x2)*(x1-x2)(y1-y2)*(y1-y2));if(len 2*r){ //相切 printf(相切\n);}else if(x1x2 y1y2){ //重合 printf(重合\n);}else if(len 2*r){ //相离 printf(相离\n);}else{ //相交 m acos(0.5*len/r)*180.0/PI;s m/90*PI*r*r-r*sin(m*PI/180)*len;printf(相交 %.2lf\n,s);} }
}