描述

腾讯开发了一款益智游戏:一笔画。在一个正 n 边形上,将 n 条边的中点连结,形成一个新的正 n 边形,之后再在新的正 n 边形内连结各个中点,如此重复 k 次,作为游戏的初始图案。玩家要从初始图案最外层 n 个顶点中的一个出发,进行无公共 端点 的一笔画。>>>详情请点击

题解

数学几何问题,涉及到的是求正多边形的内角以及已知两边一角求第三边的一般性问题。难度不大,细心就好。

代码C++

#include <iostream>
#include <cmath>
const double PI = 3.1415926;
double K[22];

int main(int argc, const char * argv[]) 
{
    int n, k;
    while (std::cin >> n >> k)
    {
        std::cin >> K[0];
        double degree = 180 - (360.0 / n);
        for (int i = 1; i <= k; i++)
        {
            K[i] = sqrt(K[i - 1] * K[i - 1] / 2 * (1 - cos(degree * PI / 180)));
        }
        double ans = 0;
        for (int i = 0; i < k; i++)
        {
            ans += K[i] * (n - 0.5);
        }
        ans += K[k] * (n - 1);
        printf("%f\n", ans);
    }

    return 0;
}