Greater New York Region 2014-The Queen’s Super-circular Patio(计算几何)

The Queen’s Super-circular Patio

时间限制: 1 Sec  内存限制: 128 MB
题目描述
The queen wishes to build a patio paved with of a circular center stone surrounded by circular rings of circular stones. All the stones in a ring will be the same size with the same number of stones in each ring. The stones in the innermost ring will be placed touching (tangent to) the adjacent stones in the
ring and the central stone. The stones in the other rings will touch the two adjacent stones in the next inner ring and their neighbors in the same ring. The fi gures below depict a patio with one ring of three stones and a patio with 5 rings of 11 stones. The patio is to be surrounded by a fence that goes around the outermost stones and straight between them (the heavier line in the fi gures).
The queen does not yet know how many stones there will be in each circle nor how many circles of stones there will be. To be prepared for whatever she decides, write a program to calculate the sizes of the stones in each circle and the length of the surrounding fence. The radius of the central stone is to be one queenly foot.
输入
The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. Each data set should be processed identically and independently.
Each data set consists of a single line of input. It contains the data set number, K, the number, N (3 ≤ N ≤ 20), of stones in each circle and the number, M (1 ≤ M ≤ 15), of circles of stones around the central stone.
输出
For each data set there is a single line of output. It contains the data set number, K, followed by a single space which is then followed by the radius (in queenly feet) of the stones in the outermost ring (to 3 decimal places) which is followed by a single space which is then followed by the length (in queenly feet) of the fence (to 3 decimal places).

样例输入

3
1 3 1
2 7 3
3 11 5

样例输出
1 6.464 79.400
2 3.834 77.760
3 2.916 82.481

参考博客:https://haijeng.github.io/2019/08/13/acm2014-I/
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const double pi=3.1415926535;
 5 int main()
 6 {
 7     int t;
 8     scanf("%d",&t);
 9     while(t--)
10     {
11         int k,n,m;
12         scanf("%d%d%d",&k,&n,&m);
13         double dio=pi/double(n);
14         double sinn=sin(dio),coss=cos(dio);
15         double r=sinn/(1.0-sinn);
16         double R=1.0+r;
17         for(int i=2; i<=m; ++i)
18         {
19             R=(R*coss+r*sinn+sqrt(r*r+2*r*R*coss*sinn))/(coss*coss);
20             r=R*sinn;
21         }
22         printf("%d %.3f %.3f\n",k,r,2.0*r*(double(n)+pi));
23     }
24     return 0;
25 }
26 /*
27 3
28 1 3 1
29 2 7 3
30 3 11 5
31 */
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值