1. 程式人生 > >折線分割平面 HDU

折線分割平面 HDU

我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。

Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C 行資料,每行包含一個整數n(0<n<=10000),表示折線的數量。

Output 對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。

Sample Input
2
1
2
Sample Output
2
7

思路:這是一個找規律的問題

分割線條數  0   1   2   3

對應面數     1   2   7   16

每個數差值    1    5   9

觀察差值發現差值是個以4為公差的等差數列,所以所求面數就是前一個面數加上這個等差數列的值就可以了
code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
long long num[10002];
int main(){
    int c;
    int i;
    num[0] = 1;
    for(i = 1; i <= 10000; i++){
        num[i] = num[i-1] + 1 + 4*(i-1);//其中 1+4*(i-1)是等差數列,即面數的差值
    }
    int n;
    cin >> c;
    while(c--){
        cin >> n;
        cout << num[n] << endl;
    }
    return 0;
}