HDU献给杭电五十周年校庆的礼物 (切蛋糕,线段划分区域)

献给杭电五十周年校庆的礼物

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8710    Accepted Submission(s): 4867


Problem Description
或许你曾经牢骚满腹
或许你依然心怀忧伤
或许你近在咫尺
或许你我天各一方

对于每一个学子
母校
永远航行在
生命的海洋

今年是我们杭电建校五十周年,这是一个值得祝福的日子。我们该送给母校一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。

想象着正式校庆那一天,校长亲自操刀,把这个大蛋糕分给各地赶来祝贺的校友们,大家一定很高兴,呵呵,流口水了吧...

等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢?

做不出这个题目,没有蛋糕吃的!
为-了-母-校-,为-了-蛋-糕-(不是为了DGMM,枫之羽最会浮想联翩...),加-油-!
 

Input
输入数据包含多个测试实例,每个实例占一行,每行包含一个整数n(1<=n<=1000),表示切的刀数。
 

Output
对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行。
 

Sample Input
1 2 3
 

Sample Output
2 4 8
 

Author
lcy
 

Source
 

Recommend
lcy   |   We have carefully selected several similar problems for you:  1466 1480 1438 1249 1284 
思路:
 
(1)n条直线,最多可以把平面分为多少个区域。
 
当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。而每条射线和线断将以有的区域一分为二。这样就多出了2+(n-2)个区域。
 
故:f(n)=f(n-1)+n
 
=f(n-2)+(n-1)+n
 
……
 
=f(1)+1+2+……+n
 
=n(n+1)/2+1
 
(2)
 
设n刀最多可以切成g(n)块,则g(n)=g(n-1)+f(n-1)
 
可以通过拆项推出 g(n)=(n^3+5n)/6+1
 
 
 
#include<stdio.h>
 
int main()
 
{
 
        int n;
 
       while(scanf("%d",&n)!=EOF)
 
        printf("%d\n",(n*n*n+5*n)/6+1);
 
}
 
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
int add(int n)
{
    int sum=0;
    if(n==0)
    sum=1;
    else
    sum=sum+add(n-1)+n;
    return sum;
}
int main()
{
    int n,m;
    int num[1005];
    num[0]=1;
    for(int i=1;i<=1000;i++)
    {
        num[i]=num[i-1]+add(i-1);
    }
    while(~scanf("%d",&n))
    {
        printf("%d\n",num[n]);
 
 
    }
    return 0;
}

 

posted @ 2015-08-22 17:29  Lincy*_*  阅读(262)  评论(0编辑  收藏  举报