日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ 1186 心理阴影(两个圆环的相交面积)

發(fā)布時間:2025/3/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ 1186 心理阴影(两个圆环的相交面积) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

心理陰影

時間限制:1000?ms ?|? 內(nèi)存限制:65535?KB 難度:2 描述
自從shanghai reginal后,zkc學(xué)長的心理就有了陰影。什么不敢水題,不敢gj,不敢放松...(各種不敢)。同樣的你們的zsj學(xué)長也是這樣的。并且他們的心理陰影是一樣一樣的。
????? 已知一個人的心理陰影為一個環(huán)形,那么求你們的zkc學(xué)長和zjs學(xué)長站在一起的時候的心理陰影的重疊面積。
輸入
T組數(shù)據(jù)
r,R表示是內(nèi)圓半徑和外圓半徑。
x1,y1 zkc學(xué)長站的位置(抽象為一個點)
x2,y2 zjs學(xué)長站的位置(也抽象為一個點)
輸出
Case #k: y
ps:k,第k組數(shù)據(jù)。y,你們的zkc學(xué)長和zjs學(xué)長站在一起的時候的心理陰影的重疊面積。
樣例輸入
2 2 3 0 0 0 0 2 3 0 0 5 0
樣例輸出
Case #1: 15.70796 Case #2: 2.25078

經(jīng)分析可得:

兩個圓環(huán)的相交面積 = 圓環(huán)1外圓和圓環(huán)2外圓的相交面積 - 圓環(huán)1外圓和圓環(huán)2內(nèi)圓的相交面積 - 圓環(huán)1內(nèi)圓和圓環(huán)2外圓的相交面積 + 圓環(huán)1內(nèi)圓和圓環(huán)2內(nèi)圓的相交面積。

#include <cstdio> #include <cmath> using namespace std;#define PI acos(-1.0) //定義PIstruct Circle { // 定義圓double x, y;double r; };struct Ring { // 定義圓環(huán)double x, y;double R, r; };struct Get_Intersection_RingAndRing {//求圓心距,即兩個圓心之間的距離double get_dis(double x1, double y1, double x2, double y2) {return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));}// 求兩圓的相交面積double get_CircleIntersectionArea(Circle c1, Circle c2) {double dis = get_dis(c1.x, c1.y, c2.x, c2.y);// 圓心距大于半徑和,兩圓相交面積為0if(dis >= c1.r + c2.r) return 0;double min_r = c1.r < c2.r ? c1.r : c2.r;double max_r = c1.r > c2.r ? c1.r : c2.r;if(min_r + dis <= max_r) //圓心距小于半徑之差,兩圓包含關(guān)系return PI * min_r * min_r;double a = acos((c1.r * c1.r + dis * dis - c2.r * c2.r) / 2 / c1.r / dis);double b = acos((c2.r * c2.r + dis * dis - c1.r * c1.r) / 2 / c2.r / dis);double area1 = a * c1.r * c1.r; //第一個圓中扇形的面積, 弧長L=a*c1.r,面積等于0.5*L*c1.rdouble area2 = b * c2.r * c2.r; //第二個圓中扇形的面積double ans = area1 + area2; //兩個扇形的面積和等于四邊形的面積加上兩圓相交的面積double area_qua = sin(a) * c1.r * dis; //四邊形的面積ans -= area_qua;return ans;}//求圓環(huán)和圓環(huán)的相交面積double Get_IntersectionArea(Ring r1, Ring r2) {Circle a1, a2, b1, b2;a1.x = r1.x, a1.y = r1.y, a1.r = r1.r;a2.x = r1.x, a2.y = r1.y, a2.r = r1.R;b1.x = r2.x, b1.y = r2.y, b1.r = r2.r;b2.x = r2.x, b2.y = r2.y, b2.r = r2.R;return get_CircleIntersectionArea(a2, b2) - get_CircleIntersectionArea(a1, b2) - get_CircleIntersectionArea(a2, b1) + get_CircleIntersectionArea(a1, b1);} };int main() {int T;Ring r1, r2;Get_Intersection_RingAndRing x;scanf("%d", &T);for(int cas = 1; cas <= T; cas++) {scanf("%lf%lf", &r1.r, &r1.R);r2.r = r1.r, r2.R = r1.R;scanf("%lf%lf%lf%lf", &r1.x, &r1.y, &r2.x, &r2.y);printf("Case #%d: %.5lf\n", cas, x.Get_IntersectionArea(r1, r2));}return 0; }


總結(jié)

以上是生活随笔為你收集整理的NYOJ 1186 心理阴影(两个圆环的相交面积)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。