?? 1249 三角形.cpp
字號:
/*
1249 三角形
Time Limit : 1000 ms Memory Limit : 32768 K Output Limit : 256 K
GUN C++
*/
/*
組合數學——分區域問題從簡
1、平面上有n條直線,其中無兩線平行也無三線共點,求平面被這n條直線分成多少個不連通的區域?
解:采用遞推方法(設n條如此之直線分平面l(n)個不連通區域):
當只有1條直線時平面分成2個區域;
看n條直線的情形:去掉第n條直線剩下的n-1條直線分平面l(n-1)個不連通區域,加上第n條直線時,
其與這n-1條直線相交于n-1個點,將第n條直線分成n段,每段分原來的區域為兩個較小的區域,
從而l(n)應該等于原來的l(n-1)個加上后來分割后多出來的n個,即是:
l(n)=l(n-1)+n
由上述遞推關系和初值可很快解出:l(n)=l(n-1)+n=l(n-2)+(n-1)+n=...=l(1)+2+...+n
=1+n*(n+1)/2
答:平面上兩兩相交,但無三條共點的直線分平面 1+n*(n+1)/2個區域。
[附注]取l(n)表示line,下文的c(n)表示circle,t(n)表示triangle.
2、平面上有n(n〉=2)個圓,任何兩個圓都相交但無3個圓共點,求這n個圓把平面劃分成多少個不連通的區域?
解:同樣采用遞推方法(設n條如此之圓分平面c(n)個不連通區域):
當只有一個圓時平面分成2個區域;
看n個圓的情形,和上述直線情形一樣考慮,第n個圓與前n-1個圓交于2*(n-1)個點,但要注意比原來還是
多出2*(n-1)個區域(圓的循環),于是:c(n)=c(n-1)+2*(n-1)
求解有n^2-n+2。
3、三角形呢,用n個三角形最多可以把平面分成幾個區域?
解:同上,不想寫了。滾蛋吧!
t(1)=2
t(n)=t(n-1)+6*(n-1)
*/
#include <iostream.h>
using namespace std;
const int tMax=10000;
const int nMax=10000;
int main()
{
int t,n,ca,cb;
int tn;
cin>>t;
for(ca=0;ca<t;ca++)
{
cin>>n;
tn=2;
for(cb=2;cb<=n;cb++)
{
tn+=6*(cb-1);
}
cout<<tn<<endl;
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -