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 平面分割递推+数学的主要内容,如果未能解决你的问题,请参考以下文章

《入门经典》——6.19

hdu 2050 折线分割平面 递推

hdu2050 折线分割平面---递推

hdu 2050 折线分割平面(递推公式)

hdu 2050 折线分割平面 dp递推

LQ0081 直线GCD+数学