碰撞的蚂蚁
碰撞的蚂蚁
http://www.nowcoder.com/questionTerminal/83073edaa76b4d179ee0366518a58dba
一、思路
蚂蚁放到所有顶点,规定:蚂蚁逆时针爬为1,顺时针爬为0
容易知道,只有序列全0和全1才不会碰撞,所以概率为
分母,每只蚂蚁2种爬法
二、题解
对这题这样出,准确来说是对n的范围1000位存疑
测试环境:Dev-C++ 5.11
1)用位运算AC
return (1.0-(1.0/(1<<(n-1))));
测试1000,输出0.992188看上去比较靠谱
但是似乎不符合计算机底层,没有数据位数有1000位啊。。。。什么情况???左移不就溢出了?
2)用普通方式AC
return (1-1/pow(2,n-1));
测试1000,输出1.000000,,,由于溢出(就自动取极限了),但是这个符合计算机底层原理
对这道题存疑。。。。为什么上面两种都能AC,后台测试数据不会没有到1000位吧,或许只是31位以内