有一个边长为1的正六边形,只要 一推它就可以一直滚下去,正六边形左下角为A,想知道正六边形翻滚k次A点的轨迹边长是多少呢。如图是正六边形翻滚一次的情况。给定正六边形翻滚次数k,求A点翻滚轨迹长度
import java.util.*; public class Solution { /** * * @param k int整型 翻滚次数 * @return double浮点型 */ public double circumference (int k) { // write code here double[] calSum = new double[]{Math.PI / 3, Math.PI / 3 + Math.PI / Math.sqrt(3), Math.PI + Math.PI / Math.sqrt(3), Math.PI + 2 * Math.PI / Math.sqrt(3), Math.PI + 2 * Math.PI / Math.sqrt(3) + Math.PI / 3, Math.PI + 2 * Math.PI / Math.sqrt(3) + Math.PI / 3}; return k / 6 * (Math.PI / 3 *(2*Math.sqrt(3) + 4)) + (k % 6 != 0? calSum[k % 6 - 1]: 0); } }
import math # # # @param k int整型 翻滚次数 # @return double浮点型 # class Solution: def circumference(self, k): # write code here s = 0 for i in range(1, k+1): s += math.sqrt(2-2*math.cos(math.pi/3*i))*math.pi/3 return s