1290 ACM 數學
阿新 • • 發佈:2018-10-02
pac ostream sin 我們 cst 最大 using int span
題目:http://acm.hdu.edu.cn/showproblem.php?pid=1290
思路:先在草稿紙上畫,找規律。
規律:
a[n],b[n],c[n],分別代表一條直線分成的段數,二維的塊數,三位的塊數。
先考慮二維(直線)的情況,n個點把直線分成的份數a[n]=n+1。二維(平面)的情況,考慮n條直線把一個平面分成的份數最多(表示為b[n])時,第k條直線應該與前k-1條直線相交於不同的k-1個點,這k-1個點將第k條直線分成a[k-1]部分,每一部分會把所在的平面分成兩份,所以有b[n]=b[n-1]+a[n-1]。
同理三維情況c[n]=c[n-1]+b[n-1]。(每次要最大,我們都希望與每塊都相交。
Code:
#include <cstdio> #include<iostream> using namespace std; int main() { int b[1002],c[1002]; int i,n; while(cin>>n&&n>0) { b[1]=c[1]=2; for(i=2;i<=1005;i++) { b[i]=b[i-1]+i; c[i]=c[i-1]+b[i-1]; } cout<<c[n]<<endl; } return 0; }
1290 ACM 數學