zoukankan      html  css  js  c++  java
  • 天花乱坠 (数学)

    链接: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;
    }
    

      

  • 相关阅读:
    Python学习笔记 for windows 二
    Socket.io:有点意思
    MEAN Stack:创建RESTful web service
    在EC2上安装MEAN环境
    NodeJS:树的序列化
    NodeJS:树的反序列化
    NodeJS学习:爬虫小探补完计划
    NodeJS学习:爬虫小探
    依赖包bcrypt安装Issues
    Mongoose:Schema之路
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/11223605.html
Copyright © 2011-2022 走看看