这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些。概括起来就是:题意简单暴力,案例毫无价值。
一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而三个,最多是20(2+6*(1+2))部分,于是可以猜想N个三角形分割平面最多是2+6*(1+2+...+(N-1))。得到通项2+6*(N*(N-1)/2)。可以打一下表,因为这比较靠谱,递归比较耗时间。这里求出了通项,而且不是很复杂,所以不打表应该也差不多(我还没对比过)。
Sample Input
2 //组数T
1 //三角形个数N
2
Sample Output
2
8
1 #include<iostream> 2 using namespace std; 3 int T,N,i,ans; 4 5 void slove() 6 { 7 ans=2+6*((N*(N-1))>>1); 8 cout<<ans<<endl; 9 } 10 11 int main() 12 { 13 cin>>T; 14 while(T--) 15 { 16 cin>>N; 17 slove(); 18 } 19 return 0; 20 }