第十一届蓝桥杯大赛第二场省赛试题 C&C++ 研究生组-平面分割

在这里插入图片描述
平面分割

  • 直线:有n条直线,最多把平面分割为n(n+1)/2+1个区域。对于第i条直线,最多的情况是和前面已有直线相交且交点不重合,能再增加i个区域,则当前共有区域数为1 (本身具有的区域)+ 1(第一条直线切后增加) + 2 (第2条直线切后增加)+ ……+ i(第i条直线切后增加)
  • 封闭图形
    • 三角形:有n个三角形,最多把平面分割为3n(n-1)+2个区域。
      当n-1个三角形时,区域面积数为 f(n-1) 。
      要区域数最多,那么第n个三角形就必须与前n-1个三角形相交。
      则第n个三角形的一条边就被分割成 2*(n-1)-1条线段与两个半条的线段 ,
      即相当于2*(n-1)条线段。则第 n 个三角形被分割成 3* 2 * (n-1)条线段。
      则增加了 6*(n-1)个面。
      在这里插入图片描述

    • 圆形:有n个圆形,最多把平面分割为n^2-n+2个区域
      当n-1个圆时,区域数为f(n-1).那么第n个圆就必须与前n-1个圆相交,
      则第n个圆被分为2(n-1)段线段,增加了2(n-1)个区域。
      在这里插入图片描述

#include<stdio.h>
int main(){
	//n条直线可以分割出n*(n+1)/2 + 1个平面(每次加新直线时,保证新家直线和已有直线都相交且交点不重合) 
	int ans = 20 * 21 / 2 + 1;
	for(int i = 1; i <= 20; i++){
		//每新加一个圆,都至多和一条直线分为两块,一个圆分为两块 
		ans += 20 * 2 + (i - 1) * 2;
	} 
	printf("%d", ans); 
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值