平面切割

 

 

題目描述ios

咱們要求的是n條閃電型折線分割平面的最大數目。好比,一條閃電型折線能夠將平面分紅兩部分,兩條最多能夠將平面分紅12部分,三條最多可將平面分紅31部分,四條最多則可將一個平面分爲59部分。數組

輸入測試

輸入數據的第一行是一個整數C,表示測試實例的個數,而後是C 行數據,每行包含一個整數n(0<n<=10000),表示折線的數量。spa

輸出code

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

樣例輸入遞歸

      3ci

      1  2  3數學

樣例輸出io

2

12

31

提示

 

注意用遞歸的方式找到數學公式哦~

 

 

一致的數據比較多,並且題目提示用遞歸數學公式,也就是數學上的遞推公式;

咱們來分析下,已知的幾組數組        

     閃電星折線   爲 n=1 時  平面被分紅C=2 份

 

n=2   C=12  狀況

 

 

有前兩組數據,及幾何圖形,可推知,n每增長1,C的增長跟n正相關,即每次C的增長數量是在前一次C值的基礎上增長特定的值,即先後兩項無倍數關係

下面假設  遞推公式  C[i]=C[i-1];

 

下面來代入題目中給的 數據

n=2;

C[2]=C[1]=2       而實際C[2]=12;  前者少1*10-0;

 

n=3;

C[3]=C[2]=12     而實際C[3]=31;   前者少2*10-1;

  

n=4;

C[4]=C[3]=31     而實際C[4]=59;   前者少3*10-2;

 

.

.

.

.

 

很容易獲得正確的遞推公式爲C[i]=C[i-1]+10*(i-1)-(i-2);

遞推公式出來了,下面貼代碼:

  2016-06-05-17:51:21

 #include<iostream>
 using namespace std;
 int a[10001];
void list()
 {
     a[1]=2;
     for(int i=2;i<=10000;i++)
    {
        a[i]=a[i-1]+(i-1)*10-(i-2);
    }
 }
 int main()
 {
     int n,N;
     cin>>N;
    list();
     while(N--)
    {
         cin>>n;
        cout<<a[n]<<endl;
     }
     
     return 0;
  } 
相關文章
相關標籤/搜索