這道題是讓你求第 \(n+1\) 個五邊形數,多組數據。ios
樓上已經給出了 \(O(n+t)\) 的解法,可是這個解法太不優秀了。spa
考慮 \(O(t)\) 通項公式解。code
如今手動推一下,很明顯, \(f_1=1,f_n=f_{n-1}+3n-2\) 。ci
我不滿意,這樣一次詢問的複雜度就是 \(O(n)\) 的了!io
仔細觀察,而後嘗試對差分求出前綴和,對於每一個詢問 \(O(1)\) 解決,用通項公式表達爲 \(f_n=\frac{n(3n-1)}{2}\).class
而後咱們就能夠求出第 \(n+1\) 個五邊形數了。stream
代碼太簡單了,但仍是貼一下.數據
#include <iostream> using namespace std; int main(){ while(1){ int n; cin>>n; if(n==0)return 0; n+=1; cout<<n*(3*n-1)/2<<endl; } }