1. 程式人生 > >1249 三角形(平面劃分)

1249 三角形(平面劃分)

題目:

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; }