天花乱坠 (数学)

链接:https://ac.nowcoder.com/acm/contest/992/F
来源:牛客网

题目描述

某年某月某日,琪仔get到了一款十分精美的天花板图案的设计图纸。
图案的框架最初是一个正n边形,之后以它的n条边的中点为顶点构成一个新的正n变形。如此重复多次后,就能得到天花板图案的框架了。
不要问重复多少次,问就是无限重复。。。
给定n,求生成的图案的框架所有边的长度总和(最初正n边形每条边的边长均为100)。

输入描述:

多组测试(不多于100组),每组一行一个整数n( 2 < n <= 100),表示正多边形的边数。

输出描述:

对于每组测试,输出一行一个结果,四舍五入保留两位小数。(请用较为简洁的计算方式,以减少误差)
示例1

输入

复制
3
4
50

输出

复制
600.00
1365.69
2533863.09

析:这就是一个很简单的数学推导,很容易知道正 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
", ans);
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/dwtfukgv/p/11223605.html