HDU 递推 1290

5 篇文章 0 订阅
1 篇文章 0 订阅

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

题目

1290

分析

我们首先应该熟知二维的分割问题,如有疑问请参考上一篇blog2050 折线分割平面问题。

平面分割与交点有关。我们可以猜想在三维中空间数是否与平面的交线有关呢?

当有n-1个平面时,分割的空间数为f(n-1)。要有最多的空间数,则第n个平面需与前n-1个平面相交,且所有交线不重合,即最多有n-1 条交线。反过来思考,这n-1条交线把第n个平面最多分割成g(n-1)个区域。(g(n)为n条直线分平面的个数 )。

此时,第n个平面上每个区域将原有的空间一分为二,故最多增加g(n-1)个空间

所以,有公式: f(n) = f(n-1) + g(n-1)

其中,g(n) = g(n-1) + n,求出其通项公式为g(n) = n(n+1)/2+1。代入化简,有f(n) = f(n-1) + n(n-1)/2 + 1

代码

#include <stdio.h>

int main()
{
	int n, i;
	long long surface, space, pre_space;
	while (scanf("%d", &n) != EOF)
	{
		if (n < 1 || n > 1000)
			return ;
		pre_space = 2;
		space = 4;
		if (n == 1)
			printf("%lld\n", pre_space);
		else
		{
			for(i = 2; i <= n; i++)
			{
				space = pre_space + i*(i-1)/2 + 1;
				pre_space = space;
			}
			printf("%lld\n", space);
		}
			
	}
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值