这题推起来还是能接受的,折线分割平面,应该从直线去推导折线的情况,而且直线分割平面是有现成公式可以用的
1条直线将平面分成 2 部分
2条直线将平面分成 4 = 2 + 2 部分
3条直线将平面分成 7 = 2 + 2 + 3 部分
4条直线将平面分成 11 = 2 + 2 + 3 + 4 部分
。。。
n条直线将圆分成 2+2+3+4+...+n = 1 + n(n+1)/2 (n>1)部分
(而一条折线是由两条直线构成的,然后去掉直线相交的另一部分)
由上边几幅图可以推导一个递推公式
即:分割的面积 = 直线分割面积 - 当前i值;
代码如下:
#include <cstdio>
#include <iostream>
using namespace std;
const int max_size = 10005;
int main()
{
int arry[max_size*2] = {0, 2, 4, 7};///用arry[]存放直线分割平面的结果
for(int i = 4; i <= max_size*2; ++i)
{
arry[i] = arry[i-1] + i;
}
int t;
scanf("%d", &t);
while(t--)
{
int n;
scanf("%d", &n);
printf("%d\n", arry[n*2] - n*2);///分割的面积 = 直线分割面积 - 当前i值;
}
return 0;
}