codeforces 711E 数学

计算1-(2^n-1)*...*(2^n-(k-1))/(2^n(k-1)).

先算公约数,可以看出公约数只能是2的n次幂,求每个分子和2的n次幂的最大公约数,因为gcd(a,b)=gcd(b-a,a),所以直接求2^n和(k-1)!的公约数,然后同除就行。这里有勒让德定理:在正数n!的素因子标准分解式中,素数p的指数记作,则。然后就能算出有多少2的约数,一除就行。

最后如果是大于最多的天数,就直接输出1。

posted on 2016-09-18 11:51  very_czy  阅读(176)  评论(0编辑  收藏  举报

导航