码迷,mamicode.com
首页 > 其他好文 > 详细

1290 ACM 数学

时间:2018-10-01 23:48:29      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:部分   情况   out   while   pid   不同的   end   一个   http   

题目: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 数学

标签:部分   情况   out   while   pid   不同的   end   一个   http   

原文地址:https://www.cnblogs.com/CheeseIce/p/9736026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!