题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2050
解题思路:数学题啊 ,貌似没什么思路啊,杯具啊,搞了好久。这是网上的:http://blog.sina.com.cn/s/blog_76eabc150100swg8.html,这是一种方法。还有一种是:分割平面数 = 交点数+顶点数+1。若我们知道n-1条折线分割平面的最大数f(n-1),要知道f(n),只要知道最大的交点增加数,而顶点数肯定多了1个。根据以上可以推出:f(n) = f(n-1) + 4 * (n-1) +1。
代码如下(根据第二种方法,因为这也是一道递推的题目):
#include<stdio.h> int main() { int c, n, i; _int64 b[10001] = {0,2,7}; for (i = 3; i < 10001; i++) b[i] = b[i-1] + 4*(i-1) + 1; while (scanf("%d",&c) != EOF) { for(i = 0; i < c; i++) { scanf("%d",&n); printf("%I64d\n",b[n]); } } return 0; }