题目描述
输入
输出
样例输入
136865353
样例输出
423626558
题解
微积分
显然对于一张图,如果有锐角,则一定存在逆时针方向连续的两个角分别为钝角和锐角,且这样的连续两个角仅存在一组。
那么我们对这样的部分单独分析:
我们令点 $P$ 为该钝角,点 $Q$ 为该锐角。
那么在其余的点中,点 $P$ 逆时针前一个点一定在 $widehat{PQ'}$ 上,点 $Q$ 逆时针后一个点一定在 $widehat{PQ'P'}$ 上。
因此其余的点一定满足条件:全部在 $widehat{PQ'P'}$ 上,且至少有一个在 $widehat{PQ'}$ 上。
那么满足条件的概率就是:全部在 $widehat{PQ'P'}$ 上的概率减去全部在 $widehat{P'Q'}$ 上的概率。
设 $angle POQ=x imes {2pi}$ ,那么对于剩下 $n-2$ 个有标号点,都在 $widehat{PQ'P'}$ 上的概率为 $(frac 12)^{n-2}$ ,都在 $widehat{P'Q'}$ 上的概率为 $x^{n-2}$ 。
因此对于固定的 $angle POQ= x imes {2pi}$ ,其余 $n-2$ 个点的选择满足条件的概率为 $(frac 12)^{n-2}-x^{n-2}$ 。
所以对于无标号的 $P$ 和 $Q$ ,有标号的剩余点选择满足条件的概率就是 $int_0^{frac 12}((frac 12)^{n-2}-x^{n-2})dx=frac{n-2}{n-1}(frac 12)^{n-1}$ 。
由于我们考虑的情况没有讨论到 $P$ 和 $Q$ 的标号,因此还要乘上 $P$ 和 $Q$ 的标号方案数 $n(n-1)$ 。
最终答案为 $n(n-2)(frac 12)^{n-1}$ 。
时间复杂度 $O(log n)$ 。
#include <cstdio> #define mod 1000000007 int main() { long long n , x = 500000004 , ans; scanf("%lld" , &n) , ans = n * (n - 2) % mod , n -- ; while(n) { if(n & 1) ans = ans * x % mod; x = x * x % mod , n >>= 1; } printf("%lld " , ans); return 0; }