题目:
题意:如上所示,用N个三角形最多可以把平面分成几个区域?
两个三角形分割的平面数 =
2
2
2(一个三角形分割的平面数)+ 两个三角形相交的交点数
三个三角形分割的平面数 =
x
x
x(两个三角形分割的平面数)+ 三个三角形相交的交点数
以此类推…
也就是说增加的平面数就是
n
n
n个三角形之间交点数…
而根据脑补,两个相交三角形之间最多有
6
6
6个交点,所以想要得到分割的最多平面数,就让第
n
n
n个三角形与
n
−
1
n-1
n−1个三角形相交尽可能多的点,即与每个三角形相交
6
6
6个点。(
n
>
=
2
n>=2
n>=2)
由上可得公式 f ( 1 ) = 2 , f ( n ) = f ( n − 1 ) + 6 ( n − 1 ) ( n > = 2 ) f(1)=2,f(n)=f(n-1)+6(n-1)(n>=2) f(1)=2,f(n)=f(n−1)+6(n−1)(n>=2)
有了递推公式就非常简单了。
#include<stdio.h>
#define mx 10005
long long a[mx];
int main()
{
int i, t, n;
a[1] = 2;
for(i = 2; i <= 10000; i++)
a[i] = a[i-1] + 6 * (i-1);
scanf("%d", &t);
while(t--){
scanf("%d", &n);
printf("%lld\n", a[n]);
}
return 0;
}