1249 三角形(平面劃分)
阿新 • • 發佈:2019-01-27
題目:
Description
用N個三角形最多可以把平面分成幾個區域?Input
輸入資料的第一行是一個正整數T(1<=T<=10000),表示測試資料的數量.然後是T組測試資料,每組測試資料只包含一個正整數N(1<=N<=10000).Output
對於每組測試資料,請輸出題目中要求的結果.Sample Input
2 1 2
Sample Output
2 8
解釋一下網上到處飛的遞推式f(n)=f(n-1)+(n-1)*6是怎麼來的。
這個問題其實和n條直線可以把平面分成多少個部分是差不多一樣的。
對於直線的問題,遞推式是f(n)=f(n-1)+n
也就是說,從n-1條直線,變成n條直線,多了n塊。
為什麼就剛好是n呢?因為,一條直線可以被n-1條直線分成n段,而每一段,都恰好對應著從n-1條直線變成n條直線時會有1塊變成2塊,於是整體增加了n塊。
對於三角形的問題,道理是一樣的。
一個三角形(注意,這裡指的是三條邊構成的曲線)可以被n-1個三角形分成(n-1)*6段,於是便得到了遞推式。
所以f(n)=3 * n*(n - 1) + 2
程式碼:
#include<iostream> using namespacestd; int main() { int k, n; cin >> k; while(k--) { cin >> n; cout << 3 * n*(n - 1) + 2 << endl; } return 0; }