Wannafly挑戰賽25 B.面積並

來源:互聯網
上載者:User

標籤:out   href   ima   efi   Fix   精度   cti   coder   ble   

連結

[https://www.nowcoder.com/acm/contest/197/B]

分析

特殊優先考慮
首先考慮r>=l這種情況就是圓的面積了
第二就是r<=內切圓的半徑,這個直接是n多邊形的面積了
第三種就是介於上面二者之間了
關鍵就是怎麼求弓形的面積,也就是扇形面積減去三角形面積了

先求出CO和CD
後面就好辦了
注意這裡的扇形公式S扇=(夾角/360)πR2 化簡 π和360約分得到二分之一,二分之一夾角正是<DOC,這裡是關鍵
看代碼吧
對特別注意精度用long double

#include<bits/stdc++.h>using namespace std;#define pi acos(-1.0)int main() {        long double n, l, r;    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);    cin >> n >> l >> r;        long double h = l*cos(pi/n);//CO 也就是內切圓半徑     long double d = sqrt(l*l - h*h);//勾股定理求CD,底的一半     long double ans = 0.5*sin(2*pi/n)*l*l;//把正多邊形分角成n個三角形的面積     if(r >=l) ans = pi*r*r;//第一種     else if (r<=h) ans*=n;//第二種     else {        long double DOC=acos(h/r); //這裡很關鍵,計算角DOC        //這時候扇形面積就可以根據公式化簡了         long double dd=sqrt(r*r - h*h);        ans+=DOC*r*r - dd*h;//扇形-三角形,因為dd是底的一半不用除二         ans*=n;    }        cout << fixed << setprecision(2) << ans << endl;    return 0;}

Wannafly挑戰賽25 B.面積並

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.