蓝桥-- 生日蜡烛

2018-11-17  本文已影响21人  Tedisaname

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

上一篇下一篇

猜你喜欢

热点阅读