计算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。
时间: 2024-11-14 22:34:29
计算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。