同一个平面内有n(n<=500)条直线,已知其中p(n>=p>=2)条直线相交于同一点。
则这n条直线最多能将平面分割成多少个不同的区域?
分析:观察发现原有的p条线把平面分为2p个区域。为了能够划分出尽可能多的区域,从第p+1条线开始,添加每条线时都应该使新加的这条线和先前所有线相交于新的点。(也就是说,除了最早的p条线共点外,没有其他线三线共点。)
另外,观察发现:按照上述方法添加直线时,假设当前平面有x条直线,添加一条线以后将新增加x+1个区域。所以只要累加每一次新增加的区域数即可。
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 freopen("surface_data/surface1.in","r",stdin); 7 freopen("surface_data/surface1.txt","w",stdout); 8 int n,p; 9 int i,sum=0; 10 scanf("%d%d",&n,&p); 11 sum=p*2; 12 for(i=p+1;i<=n;i++) 13 { 14 sum=sum+i; 15 } 16 printf("%d\n",sum); 17 return 0; 18 }