题目:
腾讯开发了一款益智游戏:一笔画。在一个正 n 边形上,将 n 条边的中点连结,形成一个新的正 n 边形,之后再在新的正 n 边形内连结各个中点,如此重复 k 次,作为游戏的初始图案。
玩家要从初始图案最外层 n 个顶点中的一个出发,进行无公共 端点 的一笔画。
多画几个图找规律。当前为第K层,取(n-1)条边,否则(n-1)+1/2条
#include<bits/stdc++.h>
using namespace std;
const double PI = 3.1415926;
int main()
{
int n, k;
double L,area,ans;
cin >> n >> k>>L;
area = (n-2)*180/n;//正n边形的内角计算
ans = (n - 1)*L;//当K==0的时候
if (k != 0)//k不等于0再加上L/2
ans += L / 2;
for (int i = 1; i <= k; i++)
{
L = 2*(L / 2 * L / 2) - 2 * (L / 2 * L / 2)*cos(area / 180 * PI);
L = sqrt(L);
ans += (n - 1)*L;
if (i != k)
ans += L / 2;
}
printf("%lf", ans);//默认小数点后保留6位
//cout<<ans; 输出562.132 默认6位精度
return 0;
}