LQ0073 平面分割递推+数学
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0073 平面分割递推+数学相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2020初赛 C++ A组E题
题目描述
20 个圆和20 条直线最多能把平面分成多少个部分?
输出格式
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。
问题分析
解决平面切割问题,需要找到递推公式。
最佳得做法是,用数学的方法找到计算公式,再编程计算。
AC的C语言程序(数学公式)如下:
/* LQ0073 平面分割 */
#include <stdio.h>
int main()
int n = 20, m = 20;
printf("%d\\n", n * n + m * m / 2 + 2 * n * m - n + m / 2 + 1);
return 0;
AC的C语言程序(递推计算)如下:
/* LQ0073 平面分割 */
#include <stdio.h>
int calc(int n)
/* 先计算20圆最多将平面分割成多少部分 */
int r = 2;
for (int i = 2; i <= n; i++)
r += (i - 1) * 2;
/* 再计算直线与20个圆切割的结果 */
r += n * 2;
for (int i = 2; i <= n; i++)
r += 2 * n + i;
return r;
int main()
printf("%d\\n", calc(20));
return 0;
以上是关于LQ0073 平面分割递推+数学的主要内容,如果未能解决你的问题,请参考以下文章