2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

这篇博客详细介绍了2016第七届蓝桥杯C/C++ B组省赛的真题及解题思路,涵盖了从煤球数目到最大比例的10道题目,包括每道题的算法分析和代码实现。博主分享了自己的解题思路,并对部分题目进行了修正,提供了解题参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580。条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊!!感谢zzh童鞋的提醒。

勘误2:第7题在判断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号,正确答案应为116。

1.煤球数目

有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
….
如果一共有100层,共有多少个煤球?

请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

解题思路

第n层的煤球数是n*(n+1)/2个,共100层,放进for循环累加一下。注意求的是前一百层一共,答案为171700

代码

#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
    long long x=0;
    for(int i=1;i<101;i++){
        //printf("i:%d\n",(1+i)*(i)/2);
        x+=(1+i)*(i)/2;
    }
    printf("x:%lld\n",x);
    return 0;
}

2.生日蜡烛

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

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

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

请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

解题思路

假设他从第i年开始过,一共过了k年,写两个for穷举一下,1-100范围内,利用等差数列求和公式,满足这个式子的(2i+k)(k+1)==472就是答案,最后答案为26。

代码

#include <cstdio>
int main(){
    for(int i=1;i<100;i++){
        for(int k=1;k<100;k++){
            if((2*i+k)*(k+1)==472){
                printf("i:%d k:%d\n",i,k);
            }
        }
    }
    return 0;
}

3.凑算式

这里写图片描述

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

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

解题思路

利用c++中的全排列函数全排列一下1-9,然后条件判断一下就可以了。
答案为29

代码

#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
    //         a,b,c,d,e,f,g,h,i
    int a[10]={
  
  1,2,3,4,5,6,7,8,9},count=0;
    do{
        int ghi=(a[6]*100+a[7]*10+a[8]);
        int def=a[3]*100+a[4]*10+a[5];
        if((a[0]*a[2]*ghi)+(a[1]*ghi)+(def*a[2])==10</
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值