hdu 2050 折線分割平面 (遞推)
阿新 • • 發佈:2019-02-12
原題連結:http://acm.hdu.edu.cn/showproblem.php?pid=2050
任何三條直線不會相交於一點。
分析:
我們容易知道當n條直線分割平面的時候,遞推公式為 F(n)=F(n-1)+n 公式為 F(n)=(n+1)*n/2+1
(遞推公式可以這樣解釋,每條直線與前面的直線共有n-1個交點,所以增加n個平面)
因此,我們容易得出 當是n對平行線分割平面時,遞推公式為 F(n)=F(n-1)+4*n-2 公式為 F(n)=2*n^2+1
(遞推公式解釋為:第2*n-1條直線和2*n條直線,各增加2*(n-1)+1個平面,所以共增加4*n-2個平面)
可以把每對平行線,一頭相交,每對相交都會減少一個平面,所以共減少n個平面。
所以有遞推公式 F(n)=F(n-1)+4*n-3 公式為 F(n)=2*n^2 - n + 1
程式碼如下:
公式:
#include<iostream>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int n;
cin >> n;
cout << 2 * n*n - n + 1 << endl;
}
return 0;
}
遞推公式:
#include<iostream> using namespace std; int main() { int sum[10000 + 10] = {0,2}; for (int i = 2; i <= 10000; i++) sum[i] = sum[i - 1] + 4*i-3; int T; cin >> T; while (T--) { int n; cin >> n; cout << sum[n] << endl; } return 0; }