0%

第七届蓝桥杯C/C++ 本B 省赛 第2题 生日蜡烛(结果填空)

生日蜡烛

某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。

现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的?

请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

思路一

首先来个蠢点的法子,从a岁到b岁的累加为236,我们并不知道a,b各为多少,但是我们可以通过和为236进行遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;

int main(){
int i,j,sum;
for(j=1;j<100;j++){
sum=0;
for(i=j;sum<=236;i++){
sum+=i;
if(sum==236)
cout<<j<<endl;
}
}
return 0;
}

思路二

1 2 3 4 5 6……这一个等差数列的前n项和为(1+n)*n/2
那么,a a+1 a+2 …… b等差数列的前n项和为b的前n项和减去a-1的前n项和。
即为:(a+b)(b-a+1)/2=236

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;

int main(){
for(int i=1;i<=100;i++)
for(int j=i;j<=100;j++){
if((i+j)*(j-i+1)/2==236)
cout<<i<<endl;
}
return 0;
}

答案:26