题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1290
思路:
n条直线最多能将一个平面分成几个区域
其递推公式即为:f(n)=f(n-1)+n;
递推一下,就得到f(n)=1/2*(n*n+n)+1;
n个平面最多能将一个空间分成几个区域
递推公式即为:g(n)=g(n-1)+f(n-1);
递推一下,就得到通项公式:g(n)=(n*n*n+5*n+6)/6;
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <cstdlib> 5 #include <ctime> 6 #include <iostream> 7 #include <algorithm> 8 #include <vector> 9 #include <queue> 10 #include <map> 11 #include <set> 12 #include <string> 13 14 using namespace std; 15 16 int main() 17 { 18 __int64 n; 19 while(scanf("%I64d",&n)!=EOF) 20 { 21 printf("%I64d ",(n*n*n+5*n+6)/6); 22 } 23 return 0; 24 }