2016年第七届C/C++ B组蓝桥杯省赛真题(上)

简介: 2016年第七届C/C++ B组蓝桥杯省赛真题

第一题:煤球数目

题目描述

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

第一层放1个,

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

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

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

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

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

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


题目分析

该题目是一个模拟题,首先找出他的规律


第一层:1

第二层:1+2

第三层:1+2+3

第四层:1+2+3+4

第100层:1+2+…+100

最终的要求是**求所有的煤球数** ,看清题意 很重要哦!


题目代码

#include<bits/stdc++.h>
using namespace std;
int main(){
  int res = 0;
  int temp = 0;
  for(int i = 1;i <= 100; i++){
    temp+=i;//temp:1  1+2  1+2+3
    res += temp;//
  }
  cout<<res<<endl;//171700
  return 0;
}

题目答案

171700


第二题:生日蜡烛

题目描述

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

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

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

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

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

题目分析

暴力法,两层循环,第一层表示从多少岁过生日,第二层表示当前多少岁了。满足条件就跳出循环。

题目代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
  for(int i = 1;i <=100; i++){
    int temp = i;
    for(int j = i+1; j<= 100;j++) {
      temp += j;
      if(temp==236){
        cout<<i<<" "<<j<<endl;//26 33
      }else if(temp > 236){
        break;
      }
    }
  }
  return 0;
}

题目答案

26

第三题:凑算式

题目描述

/*
凑算式
     B      DEF
A + --- + ------- = 10
     C      GHI
(如果显示有问题,可以参见【图1.jpg】)
*/


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

比如:

6+8/3+952/714 就是一种解法,

5+3/1+972/486 是另一种解法。

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

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


题目分析


暴力循环,直接用next_permutation() .直接写9层for循环也可,但是太low了.


**注意:**根据题目中的样例,可以看出,可以存在分数的加法运算. 所以我们计算时要转换成精度更高的float或者double .最后和10做差值的结果只要 <= 1e-5,则认为相等.


题目代码

#include<bits/stdc++.h>
using namespace std;
int nums[9]  = {1,2,3,4,5,6,7,8,9};// A B C D E F G H I
//全排列
int main() {
  int ans = 0;
  do {
    int A = nums[0],B = nums[1],C = nums[2],D = nums[3],E = nums[4],F = nums[5],G = nums[6],H = nums[7],I = nums[8];
    double m = D*100.0 + E*10 + F;
    double n = G*100.0 + H*10 + I;
    if(fabs(A+B*1.0/C+m/n - 10) <=1e-5) {
      cout<<A<<" "<<B<<" "<<C<<" "<<m<<" "<<n<<endl;
      ans++; 
    }
  } while(next_permutation(nums,nums+9));
  cout<<ans<<endl;//29 
  return 0;
}
//abs:求整数的绝对值 fabs:求float或double的绝对值 
//根据题目中的样例,可以看出,可以存在分数的加法运算. 所以我们计算时要转换成精度更高的float或者double .最后和10做差值的结果只要 <= 1e-5,则认为相等. 

题目答案

29

第六题:方格填数

题目描述

如下的10个格子

+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+

047b041a6c3edca86e5b2545799f0462.jpg

填入0~9的数字。要求:连续的两个数字不能相邻。

(左右、上下、对角都算相邻)


一共有多少种可能的填数方案?


请填写表示方案数目的整数。

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


题目分析

模拟+全排列+深搜


将数组放到一维数组中,然后进行全排列,将结果 转换成二维数组.然后判断该二维数组是否是一个可行的方案.


题目代码

#include<bits/stdc++.h>
using namespace std;
int nums[10] = {0,1,2,3,4,5,6,7,8,9},map1[4][5],total;
int NEXT[8][2] = {
  -1,0,//上 
  1,0,//下 
  0,-1,//左 
  0,1,//右 
  -1,-1,//左上 
  1,1,//右下 
  -1,1,//右上 
  1,-1//左下 
};
bool check(int x,int y) {//判断该位置 八个方向的数字是否和其相邻 
  //遍历该数的八个方向
  int tx,ty;
  for(int i = 0; i < 8; i++) {
    tx = x+NEXT[i][0];
    ty = y+NEXT[i][1];
    if(tx<1 || tx >3 || ty < 1 || ty > 4){//越界 
      continue;
    }
    if(abs(map1[x][y]-map1[tx][ty])==1) {
      return false;
    }
  }
  return true;
}
void solve() { //判断当前填数方案是否成立
  //将nums放入到map1中  0-9
  int k =  0; 
  for(int i = 1; i<=3; i++){
    for(int j = 1; j<= 4; j++){
      if((i==1&&j==1) || (i==3&&j==4)){//两个特殊位置初始化 
        map1[i][j] = 1000;
        continue;
      }
      map1[i][j] = nums[k++];
    }
  }
  //判断每个位置是否符合,只要有一个不符合就结束
  for(int i = 1;i <= 3; i++) {
    for(int j = 1;j <= 4; j++){
      if(!check(i,j)){
        return;
      }
    }
  }
  total++;//都符合,则方案数++ 
}
int main() {
  do {
    solve();
  } while(next_permutation(nums,nums+10));//有几个数就加几啊~~~ 
  cout<<total<<endl;
  return 0;
}

参考答案

1580
相关文章
|
1月前
|
算法 测试技术 C++
【动态规划算法】蓝桥杯填充问题(C/C++)
【动态规划算法】蓝桥杯填充问题(C/C++)
|
1月前
|
人工智能 算法 BI
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
|
1月前
|
人工智能 C++
第十四届蓝桥杯省赛大学B组(C/C++)整数删除
第十四届蓝桥杯省赛大学B组(C/C++)整数删除
|
1月前
|
机器学习/深度学习 算法 关系型数据库
第十五届蓝桥杯C++B组省赛
第十五届蓝桥杯C++B组省赛
79 14
|
1月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
37 5
|
6月前
|
算法 测试技术 C++
小唐开始刷蓝桥(八)2013年第四届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(八)2013年第四届C/C++ B组蓝桥杯省赛真题
|
6月前
|
算法 C++ 数据格式
小唐开始刷蓝桥(七)2014年第五届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(七)2014年第五届C/C++ B组蓝桥杯省赛真题
|
6月前
|
算法 C++
小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
|
6月前
|
算法 C++
小唐开始刷蓝桥(六)2015年第六届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(六)2015年第六届C/C++ B组蓝桥杯省赛真题
|
6月前
|
数据安全/隐私保护 C++
小唐开始刷蓝桥(九)2012年第三届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(九)2012年第三届C/C++ B组蓝桥杯省赛真题