【题目描述】
同一平面内有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 }