【贪玩巴斯】蓝桥杯训练:2016年蓝桥杯省赛B组题目及解析

// 16年蓝桥杯B组原题及解答

贪玩巴斯使用的是 c plusplus

第一题

题目:

/*

煤球数目

有一堆煤球,堆成三角棱锥形。具体:

第一层放1个,

第二层3个(排列成三角形),

第三层6个(排列成三角形),

第四层10个(排列成三角形),

....

如果一共有100层,共有多少个煤球?

请填表示煤球总数目的数字。

注意:你提交的应该是一个整数,不要填写任何多余的容或说明性文字。

*/

答题源程序:

/**

AchesonD16

2021年7月10日 PM11:35

*/

#include<iostream>

using namespace std;

int main()

{

    int arr[101] = {0};

    

    for(int i = 1; i < 101; i++)

        arr[i] = arr[i-1] + i;

    

    int add = 0;

    for(int j = 1; j < 101; j++)

        add = add + arr[j];

    

    cout << add << endl;

    

    return 0;

}

个人解析心得:

/*

我们可以发现 1 = 1; 1+2 = 3; 1+2+3 = 6; 1+2+3+4 = 10 符合题意,他们是等差数列求和(1一直往后加)

我们考虑使用一个数组来存储每一个排的煤球个数,再用add来计算总和,把每一排一次加起来。

*/

第二题

题目:

生日蜡烛

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

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

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

请填写他开始过生日party的年龄数。

注意:你提交的应该是一个整数,不要填写任何多余的容或说明性文字。

// c语言版本

#include<stdio.h>

int main()

{

    int start,end;

    for(start = 1 ; start < 236 ; start ++)

    {

        for( end = start ; end < 236 ; end ++ )

        {

            int sum = 0;

            for(int i = start; i <= end; i ++)

                sum += i;

            if( sum == 236)

            {

                printf("start : %d end : %d\n",start,end);

            }

        }

    }

    return 0;

}

// c++版本

#include <iostream>

using namespace std;



int main()

{

    

    for(int i = 1; i < 100; i++) // 从 1 到 100 岁挨个开始计算

    {

        int sum = 0;  // 蜡烛(年龄)总和数

        for (int j = i; j < 100; j++) // 带入每个年龄,这里的开始年龄不同

        {

            sum += j;

            if(sum==236) // 如果等于了

            {

                cout << i << endl;

            }

            else if( sum > 236 )

            {

                break;

            }

        }

    }

        

    return 0;

}

心得 :

一、

当使用 if...else if...else 语句时,以下几点需要注意:

一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。

一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。

一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

二、

要明白我们使用的是计算机,那么我们可以利用它强大的计算能力来计算,这道题的关键就是可以利用计算机让他从1岁开始到100岁,挨个岁数开始去计算总和,看总和是否等于236,满足的话就cout输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪玩巴斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值