您的位置:首页 > 其它

HDU 2050折线分割的问题

2014-07-27 12:06 120 查看
首先分析直线分平面最多多少份: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  折线分割