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 生日蜡烛枚举的主要内容,如果未能解决你的问题,请参考以下文章