一【题目描述】
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
二【解题思路】
这是一道程序填空题,首先我们认真的读题目,题目要我们求出某君开始过生日party的年龄,我们首先想到的就是暴力枚举,从1岁到100岁for循环,然后进行累加判断,如果和等于236,返回i,否则i++。只需要双重for循环就可以得到答案。
例如这样:
#include<iostream>
using namespace std;
int main()
{
int i=0;
int sum=0;
for(i=1;i<100;i++)
{
sum=0;
for(int j=i;j<100;j++)
{
sum+=j;
if(sum==236) cout<<i<<" "<<j<<endl;
if(sum>236) break;
}
}
return 0;
}
上面的也可以用一个for循环解决,我们需要累加的变量是i,所以我们这里可以设置一个变量累加,又或者直接利用等差数列公式求和进行if语句的判断。
三【解题步骤】
#include<iostream>
using namespace std;
int main()
{
int age=1;//这里让age作为变量实现一个for循环解决
int i=1;
int sum=0;
for(i;i<100;i++)
{
sum+=i;
if(sum>236)
{
sum=0;
i=++age;
}
if(sum==236) cout<<age+1<<endl;
}
return 0;
}
答案是:26
扫描二维码关注公众号,回复:
10908952 查看本文章
四【总结】
这题的做法有很多,很多时候可以用暴力枚举的方式,但是我们也要考虑一下稍微的优化,这样后面编程题的时候就有这样的思维。如有更好的,欢迎交流哦,谢谢。