献给杭电五十周年校庆的礼物
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8332 Accepted Submission(s): 4612
Problem Description
或许你曾经牢骚满腹
或许你依然心怀忧伤
或许你近在咫尺
或许你我天各一方
对于每一个学子
母校
永远航行在
生命的海洋
今年是我们杭电建校五十周年,这是一个值得祝福的日子。我们该送给母校一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。
想象着正式校庆那一天,校长亲自操刀,把这个大蛋糕分给各地赶来祝贺的校友们,大家一定很高兴,呵呵,流口水了吧...
等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢?
做不出这个题目,没有蛋糕吃的!
为-了-母-校-,为-了-蛋-糕-(不是为了DGMM,枫之羽最会浮想联翩...),加-油-!
或许你依然心怀忧伤
或许你近在咫尺
或许你我天各一方
对于每一个学子
母校
永远航行在
生命的海洋
今年是我们杭电建校五十周年,这是一个值得祝福的日子。我们该送给母校一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。
想象着正式校庆那一天,校长亲自操刀,把这个大蛋糕分给各地赶来祝贺的校友们,大家一定很高兴,呵呵,流口水了吧...
等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢?
做不出这个题目,没有蛋糕吃的!
为-了-母-校-,为-了-蛋-糕-(不是为了DGMM,枫之羽最会浮想联翩...),加-油-!
Input
输入数据包含多个测试实例,每个实例占一行,每行包含一个整数n(1<=n<=1000),表示切的刀数。
Output
对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行。
Sample Input
1 2 3
Sample Output
2 4 8
Author
lcy
题目分析:我们可以将球抽象为一个空间,刀抽象为一个平面,那么这道题就对应到了平面划分空间的模型,那么平面划分区域的公式是什么呢?
首先设f(n)为n个平面最多能将空间划分为多少个区域,g(n)为n条直线能将平面划分为最多的区域数
首先我们想第n个平面,可以和n-1个平面相交形成n-1条不重合的交线,n-1条交线可将第n个平面划分为g(n)个区域,对应到平面的两侧,也就是新增了g(n)个区域
所以f(n)-f(n-1)=g(n)
那么由等差数列求和公式得,f(n) = (n*n*n+5*n)/6+1
下面就是幼儿园小朋友都能1a的代码了
首先设f(n)为n个平面最多能将空间划分为多少个区域,g(n)为n条直线能将平面划分为最多的区域数
首先我们想第n个平面,可以和n-1个平面相交形成n-1条不重合的交线,n-1条交线可将第n个平面划分为g(n)个区域,对应到平面的两侧,也就是新增了g(n)个区域
所以f(n)-f(n-1)=g(n)
那么由等差数列求和公式得,f(n) = (n*n*n+5*n)/6+1
下面就是幼儿园小朋友都能1a的代码了
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
long long n;
int main ( )
{
while ( ~scanf ( "%lld" , &n ) )
{
printf ( "%lld\n" , (n*n*n+5L*n)/6L+1L );
}
}