HDU 1290 献给杭电五十周年校庆的礼物
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1290
1.计算直线最多能将平面切割成几个部分:
第n个直线最多和之前的n-1条直线相交,有n-1个交点,将n个平面一分为2,因此f(n)=f(n-1)+n;得到f(n)=(n+1)n/2+1;
2.计算平面最多将空间分成多少个部分:
第n个平面最多和之前的n-1个平面相交,这些平面上最多有n-1条交线将该平面分成了f(n-1)份,这些平面将原来 的空间一分为二。
于是g(n)=f(n-1)+g(n-1);
最后得到:g(n) = (n^3+5n+6)/6;
#include<iostream> #include<cstdio> using namespace std; int main(){ int n; while(scanf("%d",&n)==1){ printf("%d\n",(n*n*n+5*n+6)/6); } }