LQ0031 生日蜡烛枚举

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0031 生日蜡烛枚举相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2016初赛 C++ A组B题

题目描述
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?

输出格式
请填写他开始过生日party的年龄数。

问题分析
这是一个填空题。
解法一:枚举模拟求和,从1算开始枚举,求出蜡烛数量再加以判定。
方法二:利用等差数列求和公式计算区间和,也需要做枚举开始和终止岁数。

AC的C语言程序(数列求和)如下:

/* LQ0031 生日蜡烛 */

#include <stdio.h>

#define N 236

int main()

    for (int i = 1; i <= 100; i++)  // 从i岁开始到j岁枚举计算
        for (int j = 2, sum; ; j++) 
            if ((sum = (i + j) * (j - i + 1) / 2) == N)   // 计算蜡烛数
                printf("%d\\n", i);
                return 0;
             else if (sum > N)
                break;
        
    

    return 0;

AC的C语言程序(模拟求和)如下:

/* LQ0031 生日蜡烛 */

#include <stdio.h>

#define N 236

int main()

    for (int i = 1; ;i++)  // 从1岁开始枚举
        int sum = 0;
        for (int j = i; ;j++) 
            if ((sum += j) == N)   // 合计蜡烛数
                printf("%d\\n", i);
                return 0;
             else if (sum > N)
                break;
        
    

    return 0;

以上是关于LQ0031 生日蜡烛枚举的主要内容,如果未能解决你的问题,请参考以下文章

2.生日蜡烛

生日蜡烛(蓝桥杯)

蓝桥杯-生日蜡烛

生日蜡烛 (结果填空)

java算法 蓝桥杯(题+答案) 生日蜡烛

07简单推导:生日蜡烛