依然是递推的问题, 找规律
熟悉的是N条直线最多可以把一个平面分成几个部分,首先推到直线的情况
f[1]=2 f[2]=4 f[3]=7 f[4]=11
f[n]-f[n-1]=n
现在来看折线的情况,根据题目给的信息:f[1]=2, f[2]=7,
如果我们把折线的顶点处无限延长,我们会发现它变成了两倍于折线数量的直线,
这样分割的数量就是f[2*n],但是我们现在必须要把多余的去掉,延长一条直线也就多出了2块,所以要减掉2n块。
所以g[n]=f[2*n]-2*n
#include <stdio.h>
int
main(int argc, char **argv) {
long long res[20001];
int i, n;
res[1] = 2;
for (i = 2; i <= 20000; ++ i)
res[i] = res[i - 1] + i;
int ncase;
scanf("%d", &ncase);
while (ncase--) {
scanf("%d", &n);
printf("%lld\n", res[2 * n] - 2 * n);
}
return 0;
}