链接:https://ac.nowcoder.com/acm/contest/992/F
来源:牛客网
题目描述
某年某月某日,琪仔get到了一款十分精美的天花板图案的设计图纸。
图案的框架最初是一个正n边形,之后以它的n条边的中点为顶点构成一个新的正n变形。如此重复多次后,就能得到天花板图案的框架了。
不要问重复多少次,问就是无限重复。。。
给定n,求生成的图案的框架所有边的长度总和(最初正n边形每条边的边长均为100)。
输入描述:
多组测试(不多于100组),每组一行一个整数n( 2 < n <= 100),表示正多边形的边数。
输出描述:
对于每组测试,输出一行一个结果,四舍五入保留两位小数。(请用较为简洁的计算方式,以减少误差)
析:这就是一个很简单的数学推导,很容易知道正 n 边形的每个内角的度数 PI * (n - 2) / n,有了这个,就可以通过余弦定理来求出重复在它内部的第一个正 n 边形的边长
其中 α 就是该正 n 边形的内角,x 是边长,然后可以看出,每个边长组成一个等比数列,公比就是上面那个式子除了 x,然后就可以使用等比数列求和得到最后和式,(中间使用了一次极限)
最后只要把边长和边数乘进去就行了,最后结果就是
代码如下:
#include <bits/stdc++.h> using namespace std; const double PI = acos(-1.0); int n; int main(){ while(scanf("%d", &n) == 1){ double a = cos(PI * (n - 2) / n); double ans = 100.0 * n * (2 + sqrt(2-2*a)) / (1 + a); printf("%.2f\n", ans); } return 0; }