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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BNUOJ 4067 美丽的花环 (几何题)

發布時間:2025/3/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BNUOJ 4067 美丽的花环 (几何题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

美麗的花環

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Time Limit:?1000ms ? ? ? ? ??Memory Limit:?65536KB Special Judge 64-bit integer IO format:?%lld????? Java class name:?Main

?學校的草坪上最近種植了一些漂亮的花卉,所有的花圍成了一個環形(內徑為r,外徑為R,0 <r < R) 。原來這片地上有一個用于噴灌的噴頭。這個噴頭可以為半徑K以內的植物提供水。(如圖)?

現在,HK請你幫忙計算一下,花構成的環形當中有多大面積的可以由噴頭提供灌溉。?

Input

?輸入數據只有兩行。?
格式為(中間使用空格隔開)?

x1 y1 R r?
x2 y2 K?

花環中心在(x1,y1) ,外徑為R,內徑為r。?
噴頭的位置為(x2,y2),覆蓋范圍為K。?
其中,x1,y1,R,r,x2,y2,K均為實數。

Output

?輸出題目描述中所求面積(保留2位小數)。

Sample Input

5 5 20 10 2 2 20

Sample Output

773.09

Hint

π的值請取:3.1415926或acos(-1.0)?

分析:由圖可以看出所求面積等于外環構成的圓和噴頭構成的圓的相交面積減去內環構成的圓與噴頭構成的圓的相交面積之差,所以問題轉化成了求兩個圓的相交面積。

如上圖。相交面積等于陰影部分的面積。通過分析不難得出,陰影部分的面積 = 扇形ADB的面積 ?+ ?扇形CDB的面積 ?- ?四邊形ABCD的面積,而這幾部分的面積很容易就能求出來。具體的請參考代碼部分。


#include<cstdio> #include<cmath> #define pi acos(-1.0) double get_dis(double x1, double y1, double x2, double y2) {return sqrt((x1-x2) * (x1 - x2) + (y1-y2) * (y1-y2)); } double get_ans(double x1, double y1, double r1, double x2, double y2, double r2) {double dis = get_dis(x1, y1, x2, y2);if(dis >= r1 + r2) return 0; //圓心距大于等于半徑和,兩圓相交面積為0double min_r = r1 < r2 ? r1 : r2;double max_r = r1 > r2 ? r1 : r2;if(min_r + dis <= max_r)return pi * min_r * min_r; //圓心距小于半徑之差,兩圓包含關系double a = acos((r1*r1 + dis*dis - r2*r2)/2/r1/dis);double b = acos((r2*r2 + dis*dis - r1*r1)/2/r2/dis);double area1 = a * r1 * r1; //第一個圓中扇形的面積,弧長l = a * r1, 面積等于0.5*l*r1double area2 = b * r2 * r2; //第二個圓中扇形的面積double ans = area1 + area2; //兩個扇形的面積和等于四邊形的面積加上兩圓相交的面積double area_qua = sin(a) * r1 * dis; //四邊形的面積ans -= area_qua;return ans; } int main() {double x1, y1, R, r, x2, y2, k;while(~scanf("%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&R,&r,&x2,&y2,&k)){double s1 = get_ans(x1, y1, R, x2, y2, k);double s2 = get_ans(x1, y1, r, x2, y2, k);printf("%.2lf\n",s1-s2);}return 0; }


總結

以上是生活随笔為你收集整理的BNUOJ 4067 美丽的花环 (几何题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。