某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
思路:
求解此问题只需要采用循环进行枚举即可。需要对年龄的范围进行限定,0~100之间进行枚举。由于原问题只要求求出某君从某年开始吹蜡烛的,所以只需要输出循环中某个连续整数相加起始的那个整数即可。
#include <iostream>
using namespace std;
int main()
{
for(int i = 0; i < 100; i++){
int sum = 0;//一定要初始化 ,否则输出结果为0
for(int j = i;;j++){
sum += j;//从年龄i开始,往后累加一直加到要求的条件位置
if(sum > 236)//若从年龄i累加,超过了236,终止循环
{
break;
}
if(sum == 236){//若从年龄i累加,刚好等于236,则开始吹蜡烛的年龄即为开始过生日的年龄。
cout << i << endl;
}
}
}
return 0;
}
//the result of print:
26
--------------------------------
Process exited after 0.01422 seconds with return value 0
请按任意键继续. . .
解决这个问题以后我想查看一下是哪几个数字累加后等于236根蜡烛的,于是我书
写了showAccu()这个函数用来查看这些累加数字。
#include <iostream>
using namespace std;
void showAccu(int n)//显示从年龄i到年龄累加和为指定数之间的年龄的数字
{
int sum = 0;
for(int i = n; sum < 236; i++){
sum += i;
cout << i << " ";//输出其年龄
}
}
int main()
{
int temp;
for(int i = 0; i < 100; i++){
int sum = 0;//初始化
for(int j = i;;j++){
sum += j;
if(sum > 236)
{
break;
}
if(sum == 236){
temp = i;//将其开始吹蜡烛的时间保存起来,作为参数传值
cout << i << endl;
}
}
}
showAccu(temp);
return 0;
}
//the result of print:
26
26 27 28 29 30 31 32 33
--------------------------------
Process exited after 0.06442 seconds with return value 0
请按任意键继续. . .
You can leave me a message if you find out anything incorrect in my diary, I'll correct it, thanks.
网友评论