杭电oj——2050折线分割平面

因为原题有图,我就直接放链接了

原题链接

http://acm.hdu.edu.cn/showproblem.php?pid=2050

题意:中文题= =

思路:

1.先看N条直线相交最多能弄出多少个平面

当添加第N条直线的时候,要想弄出的平面最多,必须和前面的N-1条直线都相交,增加了N-1个交点(添加第3条直线的时候新增了2个交点),新增N个平面(自己画个图看看),也可以说成是 每增加N-1个交点,就增加N个平面。所以N条直线能弄出的平面数是: 1+1+2+3+...+N=1+(1+2+3+...+N)=N*(1+N)/2+1     (最前面的1是N=0时)


2.再看每次增加两条相互平行的直线能弄出多少个平面


第N次添加时,前面已经有2N-2条直线,所以,第2N-1条直线和第2N条直线添加时都各自增加  2*N-1个平面

所以第N次添加直线时的面数是 2*(2*N-1)=4*N-2

总的面数是:1+2+6+...+(4*N-2)=1+[ 2+6+...+(4*N-2) ]=2*N*N+1


3.把(2)中添加的平行线一端相交


平面数会减少一个,所以N条折线一共会减少N个平面

总平面数:2*N*N-N+1

AC代码:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    int t,n;
    long long ans;
    cin>>t;
    while(t--)
    {
        cin>>n;
        ans=2*n*n-n+1;
        cout<<ans<<endl;
    }
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值