HDU 2050折线分割的问题

首先分析直线分平面最多多少份:f(1)=2;f(2)=4;f(3)=7;f(4)=11……可知f(n)=f(n-1)+n且f(1)=2.可知f(n)=(1+n)*n/2+1;

同理,可将每个折线看成是两条直线,但是少了一半。因此每一条折线比两条直线分割的面的部分少2。因此n条折线比2n条直线分割平面形成的部分少2n。所以f(n)=(1+2*n)*2*n/2+1-2*n=2*n^2-n+1;

在分析如果不是折线,而是"Z"形线,且认为Z的上下两边平行且为射线。则最多分平面多少部分?

Z形线和3条直线很类似,但是有两条平行,这样就少了1个部分,如果再将有两条直线平行的三条直线变为Z形的话,那又将少4个部分,这样每个Z比三条直线分平面形成的部分少5个,那么n条呢?

n条Z形线将比3n条直线分平面形成的部分少5n个部分。

因此f(n)=3*n*(3*n+1)/2-5n+1=(9*n^2-7*n+2)/2。

c源程序:

#include<stdio.h>
int main()
{
 int t,k;
 scanf("%d",&t);
 for(k=0;k<t;k++)
 {
  int n;
  __int64 num;
  scanf("%d",&n);
  num=2*n*n-n+1;
  printf("%I64d\n",num);
 }
 return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值