您的位置:首页 > 其它

UVALive 6618 Skycity(数学)

2016-07-30 23:23 323 查看
思路:一开始写二分边数一直WA到无法自理...对于给定的圆,和他相切的正多边形的边数越多,正多边形的周长越小。但是因为对每个边长有最小的长度限制,我们可以直接算出来。利用边长的最小限制,我们能求出对应的内角,从而可以找到大于等于该内角度数的边数最小的正多边形。(摘自网上)

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
double R , r , H , F , S;
const double pi = acos(-1.0);

int main()
{
while (scanf("%lf%lf%lf%lf%lf",&R , &r , &H , &F , &S)!=EOF)
{
double ans = 0;
double height = 1.0*H/F;
double d = (R-r)/F;
for(int i = 0;i<(int)F;i++)
{
double dr = r+i*d;
int bianshu = pi/atan(S/2.0/height/dr);
ans+=bianshu*2.0*dr*tan(pi/bianshu)*height;
}
printf("%.3lf\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: