@Metralix
2017-04-22T16:00:52.000000Z
字数 574
阅读 909
二分
题目大意
给一个半径为R的大圆,里面有n个小圆,把这些小圆放置成和大圆均内切且相邻两个小圆相切的形式,问每个小圆的半径是多少
解题思路
二分枚举小圆半径,然后求出大圆圆心到小圆圆心的距离,根据圆心距对的角可以求出角度,即2*PI / n,根据余弦定理求出圆心距,根据圆心距判断两小圆是否相切,直到相切为止
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <cstdlib>using namespace std;#define clc(s,t) memset(s,t,sizeof(s))#define INF 0x3fffffff#define PI acos(-1.)int T,k,c=1;double r;int main(){scanf("%d",&T);while(T--){scanf("%lf %d",&r,&k);printf("Case %d: ",c++);double res=r*sin(PI/k)/(1+sin(PI/k));if(res!=(int)res)printf("%.10lf\n",r*sin(PI/k)/(1+sin(PI/k)));else printf("%.0lf\n",res);}}
