最大区域数的计算公式推导如下:
每新增一个点,它与之前的所有点连线
每条新线与所有已有线相交,新增区域
最终区域数为组合数公式:f(n) = C(n,4) + C(n,2) + 1
其中C(n, k)表示组合数"n选k"。
C(n,4):四个点确定的交点数量
C(n,2):每条弦的基本分割
+1:初始的圆形区域
展开后得到:
f(n) = (n⁴ - 6n³ + 23n² - 18n + 24)/24
这个公式可以正确计算圆形被n个点两两连线分割的最大区域数。
每新增一个点,它与之前的所有点连线
每条新线与所有已有线相交,新增区域
最终区域数为组合数公式:f(n) = C(n,4) + C(n,2) + 1
其中C(n, k)表示组合数"n选k"。
C(n,4):四个点确定的交点数量
C(n,2):每条弦的基本分割
+1:初始的圆形区域
展开后得到:
f(n) = (n⁴ - 6n³ + 23n² - 18n + 24)/24
这个公式可以正确计算圆形被n个点两两连线分割的最大区域数。
#include<bits/stdc++.h> using namespace std; long long int fun(long long int n) { return (n*n*n*n-6*n*n*n+23*n*n-18*n+24)/24; } int main() { long long int n; while(cin>>n) { cout<<fun(n)<<endl; } }