折線分割平面 HDU
阿新 • • 發佈:2019-01-22
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。
Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C 行資料,每行包含一個整數n(0<n<=10000),表示折線的數量。
Output 對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。
Sample Input
Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C 行資料,每行包含一個整數n(0<n<=10000),表示折線的數量。
Output 對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。
Sample Input
2 1 2Sample 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; }