三角形

http://acm.hdu.edu.cn/showproblem.php?pid=1249

三角形

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5619    Accepted Submission(s): 3826


Problem Description
用N个三角形最多可以把平面分成几个区域?
 
Input
输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).
 
Output
对于每组测试数据,请输出题目中要求的结果.
 
Sample Input
2 1 2
 
Sample Output
2 8
 

 我就是来水一水

证法1:
设n个三角形最多将平面分成an个部分。
n=1时,a1=2;
n=2时,第二个三角形的每一条边与第一个三角形最多有2个交点,三条边与第一个三角形最多有2×3=6(个)交点。这6个交点将第二个三角形的周边分成了6段,这6段中的每一段都将原来的每一个部分分成2个部分,从而平面也增加了6个部分,即a2=2+2×3。
n=3时,第三个三角形与前面两个三角形最多有4×3=12(个)交点,从而平面也增加了12个部分,即: a3=2+2×3+4×3。
……
一般地,第n个三角形与前面(n-1)个三角形最多有2(n-1)×3个交点,从而平面也增加2(n-1)×3个部分,故
an=2+2×3+4×3+…+2(n-1)×3
=2+〔2+4+…+2(n-1)〕×3
=2+3n(n-1)=3n^2-3n+2。

证法2:
1个三角形把平面分成2部分
第二个三角形和第一个三角形最多有6个交点,最多可以分成8个平面,增加了6个
第三个三角形和前两个三角形每一个最多都能有6个交点,一共多了2x6=12个交点,平面就能多2x6=12个
以此类推,第N个三角形可以把平面最多分成:
2+1x6+2x6+3x6+......+(n-1)x6
=2+6x(1+2+3+......+(n-1))
=2+3n(n-1)

看数据用longlong
 1 #include<cstdio>
 2 using namespace std;
 3 int main()
 4 {
 5     int t, n;
 6     scanf("%d",&t);
 7     while(t--)
 8     {
 9         scanf("%d",&n);
10         long long l = 2+3*n*(n-1);
11         printf("%lld
",l);
12     }
13     return 0;
14 }
原文地址:https://www.cnblogs.com/shanyr/p/4674391.html