平面上n个顶点的多边形上有n只蚂蚁,这些蚂蚁同时开始沿着多边形的边爬行(一个顶点一只蚂蚁,蚂蚁速度都一样)。现给定一个int n(3<=n<=10000),代表n边形和n只蚂蚁,编写函数返回会有蚂蚁相撞的概率double值。
测试样例:
3
返回:0.75
//要想没有相撞,只有所有的蚂蚁朝一个方向走,要么顺时针,要么逆时针 //每个蚂蚁都有两个选择,所有情况2的n次方种,其中满足条件的2种 class Ants { public: double antsCollision(int n) { return 1.0 - 1.0/(1 << (n-1)); } };
import java.util.*; public class Ants { public double antsCollision(int n) { //所有蚂蚁同向时不会发生碰撞 return 1-Math.pow(0.5, n-1); } }
class Ants { public double antsCollision(int n) { return (double)(1.0 / (1 << (n-1))); } }