type
status
date
slug
summary
tags
category
icon
password
comment
今天这道题来自 杭电 oj 第 2050 题
题目
Problem Description
n 条折线分割平面的最大数目
Input
输入数据的第一行是一个整数 C,表示测试实例的个数,然后是 C 行数据,每行包含一个整数 n(0 < n <= 10000),表示折线的数量
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行
Sample Input
Sample Output
数学知识
直线
- N 条相交的直线最多能把平面分割成几块
当添加第n条直线时,为了使平面最多,则第 n 条直线要与前面 n-1 条直线都相交,并且没有任何三条线交于一个点
这样,第 n 条直线一共有 n-1 个交点
我们知道,增加 n 个交点,则增加 n+1 个平面
所以 n 条直线分割平面最大数是 1 + 1 + 2 + 3 + ... + n = (n² + n + 2) / 2
平行线
- 把直线改为平行线,最多能把平面分割成几块
当第 N 次添加时,前面已经有 2N-2 条直线了
按我们上面讨论的知道,第 N 次添加时,第 2N-1 条直线和第 2N 条直线各能增加 2(n-1)+1 个平面
所以第 N 次添加增加的面数是 2[2(n-1) + 1] = 4n - 2 个
因此,总面数应该是 2n² + 1
折线
- 把平行线改为折线,最多能把平面分割成几块
通过观察可以发现,每当一组平行线相交后,就会减少一个面
因此,n 条折线分割平面,自然就是上面求的的平行线分割平面数减去 n,即 2n² + 1 - n
代码实现
- 作者:longlong
- 链接:https://long.long-code.cn//article/2050
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。





