生日蜡烛
某君从某年开始每年都举办一次生日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