分割平面
题目描述
设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三 条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。
输入格式
一个数n(1≤n≤46341)
输出格式
一个数,这些曲线把平面分割成的个数总和
样例
样例输入
3
样例输出
8
精髓:
当前平面的个数等于前一个图形平面的个数加上新增的平面的个数。
前一个平面的个数就是a[n-1]。新增的平面的个数恰好是上一图椭圆数量的两倍,也就是2*(n-1)。
所以递推式就是:a[i]=a[i-1]+2*(i-1);
参考代码:
#include<cstdio>
int main() {
int n;
long long a[46345]={0,2};
scanf("%d",&n);
for(int i=2;i<=n;i++) {
a[i]=a[i-1]+2*(i-1);
}
printf("%d",a[n]);
}