平面分割

【题目描述】
同一平面内有n(n≤500)条直线,已知其中p(p≥2)条直线相交于同一点,则这n条直线最多能将平面分割成多少个不同的区域?


【输入格式】
两个整数n(n≤500)和p(2≤p≤n)。


【输出格式】
一个正整数,代表最多分割成的区域数目。


【输入样例】Surface.in
12 5


【输出样例】Surface.out
73

【分析】

1.当n==p时,即在p==x时n有最小值为x,且将平面分割为2x份;

2.当n的值增加i个单位时,若要使分割出的平面数最多,则新增的直线需与之前的每一条直线相交;

3.新增的直线与之前的每一条直线相交时,平面数与n==p时相比增加p+1+i。

【代码实现】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,p,m[1001];
 6     scanf("%d %d",&n,&p);
 7     m[p]=2*p;
 8     for(int i=p+1;i<=n;i++)
 9     {
10         m[i]=m[i-1]+i;
11     }
12     printf("%d",m[n]);
13     return 0;
14 }
原文地址:https://www.cnblogs.com/TheZealous/p/14291749.html