【蓝桥杯练习】B组结果填空题13-18------更新中

本文汇总了2013年至2018年蓝桥杯B组的部分数学逻辑题目,包括有趣的算术巧合、台阶上楼问题、数字谜题和算式构造等。通过解决这些问题,探讨了数学在实际问题中的应用,同时锻炼了解题者的逻辑思维能力。
摘要由CSDN通过智能技术生成

【2013年B组】

2.标题: 马虎的算式
    小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

    有一次,老师出的题目是:36 x 495 = ?

    他却给抄成了:396 x 45 = ?

    但结果却很戏剧性,他的答案竟然是对的!!

    因为 36 * 495 = 396 * 45 = 17820

    类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

    假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)

    能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?


请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

  • (142)
#include <iostream>
using namespace std;
int ans;
int main(){
	for(int a=1; a<10; a++){
		for(int b=1; b<10; b++){
			if(a!=b)
			for(int c=1; c<10; c++){
				if(c!=a&&c!=b)
				for(int d=1; d<10; d++){
					if(d!=a&&d!=b&&d!=c)
						for(int e=1; e<10; e++){
							if(e!=a&&e!=b&&e!=c&&e!=d){
							if((a*10+b)*(c*100+d*10+e)==(a*100+d*10+b)*(c*10+e)){
								ans++;
								cout<<a<<b<<"*"<<c<<d<<e<<endl;
							}									
							}
						}	
				}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}


3.题目标题: 第39级台阶

    小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!

    站在台阶前,他突然又想着一个问题:

    如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?   

  • (51167078)
    #include <iostream>
    using namespace std;
    int ans=0;
    void f(int stair, int step){
    	if(stair>39) return;
    	if(stair==39){
    		if(step%2==0) ans++;
    		return;
    	}
    	f(stair+1, step+1);
    	f(stair+2, step+1);
    }
    int main(){
    	f(0,0);
    	cout<<ans<<endl;
    	return 0;
    }

    【2014年B组】

1.标题:啤酒和饮料

    啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。

    我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

  • (11)
/*浮点数计算比较容易出错,直接乘10换成整数型。*/
#include <iostream>
using namespace std;

int main(){
	for(int i=0;i<50;i++){
		for(int j=0;j<50;j++){
			if((i<j)&&(i*23+j*19==823))
				cout<<i<<"  "<<j<<endl;
		}
	}
	return 0;
}

3.标题:李白打酒

    话说大诗人李白,一生好饮。幸好他从不开车。

    一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

    无事街上走,提壶去打酒。
    逢店加一倍,遇花喝一斗。

    这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

//DFS
#include <iostream> 
using namespace std;
int ans = 0;
void f(int store, int flower, int jiu){
	if(store>5||flower>10||jiu<0) return;
	if(store==5&&flower==9&&jiu==1)
		ans++;
	f(store, flower+1, jiu-1);
	f(store+1, flower, 2*jiu);	
}

int main(){
	f(0,0,2);
	cout<<ans<<endl;
	return 0;
}
//破解法,permutation函数还是很最重要的,推荐都掌握下
//主要最后一次是花的这个条件,如果全排列15个判断最后酒为0的话就会多出酒为0了然后之后全为店的状态 
#include <iostream>
#include <algorithm>
using namespace std;
int ans=0;
int jiu=2;
int main(){
	int a[14]={1,1,1,1,1,2,2,2,2,2,2,2,2,2};
	do{
		for(int i=0;i<14;i++){
			if(a[i]==1) jiu=2*jiu;
			if(a[i]==2) jiu=jiu-1;
		}
		if(jiu==1) ans++;
		jiu=2;		
	}while(next_permutation(a,a+14));
	cout<<ans<<endl;
	return 0;
}

6.标题:奇怪的分式

    上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:

    1/4 乘以 8/5 

    小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)

    老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!

    对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?

    请写出所有不同算式的个数(包括题中举例的)。

    显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。

    但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

 

//全排列+判断,permutation或者for循环都可以,这类题做的太多了,懒得做了。
//注意分式的计算转换为乘法

7.标题:六角填数

    如图【1.png】所示六角形中,填入1~12的数字。

    使得每条直线上的数字之和都相同。

    图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

 

  • (10) 

//暴力破解法 
#include <iostream>
using namespace std;
#include <algorithm>
int main(){
	int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
	do{
		if(a[0]==1&&a[1]==8&&a[11]==3&&a[0]+a[2]+a[5]+a[7]==a[0]+a[3]+a[6]+a[10]
			&&a[0]+a[2]+a[5]+a[7]==a[7]+a[8]+a[9]+a[10]&&a[0]+a[2]+a[5]+a[7]==a[1]+a[2]+a[3]+a[4]
			&&a[0]+a[2]+a[5]+a[7]==a[1]+a[5]+a[8]+a[11]&&a[0]+a[2]+a[5]+a[7]==a[4]+a[6]+a[9]+a[11])
		cout<<a[5]<<endl;
	}while(next_permutation(a,a+12));
	return 0;
}

  【2015年B组】

1.奖券数目

有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。

//注意首位不能为0 
// 排列组合,首位不能为0,4,其他不为4,所以8*9*9*9*9=52488 
#include <iostream>
using namespace std;
int ans;
int main(){
	for(int i=1;i<10;i++){
		if(i!=4)
		for(int j=0;j<10;j++){
			if(j!=4)
			for(int k=0;k<10;k++){
				if(k!=4)
				for(int l=0;l<10;l++){
					if(l!=4)
					for(int m=0;m<10;m++){
						if(m!=4){
							int num = i*10000+j*1000+k*100+l*10+m;
							if(num>9999&&num<100000)
								ans++;
						}
					}
				}
			}
		}
	}
	cout<<ans;
	return 0;
} 

2.星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

 

//日期题目参照13年A组第一题
//excel设置表格为日期直接加就好,如果日期在1900年之前,加4000年再减回去

3.三羊献瑞

观察下面的加法算式:

      祥 瑞 生 辉
  +   三 羊 献 瑞
-------------------
   三 羊 生 瑞 气

(如果有对齐问题,可以参看【图1.jpg】)

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

//写到这里发现填空题大都可用全排列permutation解决,这个函数真的是蓝桥杯必备。

6.加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

  • (16)

//处理后得到x*(x+1)+y(y+1)=792+2x+2y;
#include <iostream>
using namespace std;

int main(){
	for(int x=1;x<50;x++){
		for(int y=1;y<50;y++)
			if(x<y){
				if(x*(x+1)+y*(y+1)==792+2*x+2*y)
					cout<<x<<endl;
			}
	}
} 

 

7. 牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

  • (3598180)

//DFS 牌型type:A-K,开始发牌
//暴力破解查看同年A组 
#include <iostream>
using namespace std;
int ans=0;
void f(int type, int sum){
	if(sum>13) return;
	
	if(type==13){  //表示A-k牌型发牌结束 
		if(sum==13)
			ans++;
			return;
	}	
	
	for(int i=0; i<5;i++){
		f(type+1,sum+i);
	}
}
int main(){
	f(0,0);
	cout<<ans<<endl;
	return 0;
} 

     【2016年B组】

1.煤球数目

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

  • (5050)
#include <iostream>
using namespace std;
int ans=0;
int main(){
	for(int i=1;i<101;i++){
		ans+=i;
	}
	cout<<ans;
	return 0; 
}

2.生日蜡烛

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

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

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

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

//双重循环,参考同年A组

 3.凑算式

     B      DEF
A + --- + ------- = 10
     C      GHI
     
(如果显示有问题,可以参见【图1.jpg】)
     
     
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

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

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

//遍历+判断
//注意题意,字母代表的数字不同,能转换为乘法经量不用除法

6.方格填数

//参考同年A组

7. 剪邮票

如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。

请你计算,一共有多少种不同的剪取方法。

  • ()

 

 

  【2017年B组】

1.标题: 购物单

    小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

    这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
    小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
    现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

    取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。
    你的任务是计算出,小明最少需要取多少现金。

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
-----------------
****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折
****     125.50       58折
****      84.98        9折
****     113.35       68折
****     166.57        半价
****      42.56        9折
****      81.90       95折
****     131.78        8折
****     255.89       78折
****     109.17        9折
****     146.69       68折
****     139.33       65折
****     141.16       78折
****     154.74        8折
****      59.42        8折
****      85.44       68折
****     293.70       88折
****     261.79       65折
****      11.30       88折
****     268.27       58折
****     128.29       88折
****     251.03        8折
****     208.39       75折
****     128.88       75折
****      62.06        9折
****     225.87       75折
****      12.89       75折
****      34.28       75折
****      62.16       58折
****     129.12        半价
****     218.37        半价
****     289.69        8折
--------------------

需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。
特别地,半价是按50%计算。

请提交小明要从取款机上提取的金额,单位是元。
答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。

  • (5200)

//导入excel替换关键字为数字,求和

 2.标题:等差素数列

2,3,5,7,11,13,....是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。

2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:

长度为10的等差素数列,其公差最小值是多少?

 

  【2018年B组】

1.标题:第几天

2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?

  • (125)

2.标题:明码

汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。
16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。

一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。
把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,
一共16行,布局是:

    第1字节,第2字节
    第3字节,第4字节
    ....
    第31字节, 第32字节

这道题目是给你一段多个汉字组成的信息,每个汉字用32个字节表示,这里给出了字节作为有符号整数的值。

题目的要求隐藏在这些信息中。你的任务是复原这些汉字的字形,从中看出题目的要求,并根据要求填写答案。

这段信息是(一共10个汉字):
4 0 4 0 4 0 4 32 -1 -16 4 32 4 32 4 32 4 32 4 32 8 32 8 32 16 34 16 34 32 30 -64 0 
16 64 16 64 34 68 127 126 66 -124 67 4 66 4 66 -124 126 100 66 36 66 4 66 4 66 4 126 4 66 40 0 16 
4 0 4 0 4 0 4 32 -1 -16 4 32 4 32 4 32 4 32 4 32 8 32 8 32 16 34 16 34 32 30 -64 0 
0 -128 64 -128 48 -128 17 8 1 -4 2 8 8 80 16 64 32 64 -32 64 32 -96 32 -96 33 16 34 8 36 14 40 4 
4 0 3 0 1 0 0 4 -1 -2 4 0 4 16 7 -8 4 16 4 16 4 16 8 16 8 16 16 16 32 -96 64 64 
16 64 20 72 62 -4 73 32 5 16 1 0 63 -8 1 0 -1 -2 0 64 0 80 63 -8 8 64 4 64 1 64 0 -128 
0 16 63 -8 1 0 1 0 1 0 1 4 -1 -2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 5 0 2 0 
2 0 2 0 7 -16 8 32 24 64 37 -128 2 -128 12 -128 113 -4 2 8 12 16 18 32 33 -64 1 0 14 0 112 0 
1 0 1 0 1 0 9 32 9 16 17 12 17 4 33 16 65 16 1 32 1 64 0 -128 1 0 2 0 12 0 112 0 
0 0 0 0 7 -16 24 24 48 12 56 12 0 56 0 -32 0 -64 0 -128 0 0 0 0 1 -128 3 -64 1 -128 0 0 
 

//这个题excel比编程方便多了,把数据复制到word,按文字转换为表格再复制到excel利用十进制转二进制函数
//转换好以后设置文字靠右就ok。

//转换过来题目为:九的九次方

3. 标题:乘积尾零

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?

5650 4542 3554 473 946 4114 3871 9073 90 4329 
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 
1486 5722 3135 1170 4014 5510 5120 729 2880 9019 
2049 698 4582 4346 4427 646 9742 7340 1230 7683 
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 
6701 6645 1671 5978 2704 9926 295 3125 3878 6785 
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 
689 5510 8243 6114 337 4096 8199 7313 3685 211 

//任何一个数的尾零都可以分为2*5,所以算出所有数中一共可以约出来多少5和2即可
//答案:31 
#include <iostream>
#include <set>
#include <mem.h>
using namespace std;
int cnt1 = 0, cnt2 = 0;
int main(){
	int a[100]={5650,4542,3554,473,946,4114,3871,9073,90,4329,
			2758,7949,6113,5659,5245,7432,3051,4434,6704,3594,
			9937,1173,6866,3397,4759,7557,3070,2287,1453,9899,
			1486,5722,3135,1170,4014,5510,5120,729,2880,9019,
			2049,698,4582,4346,4427,646,9742,7340,1230,7683,
			5693,7015,6887,7381,4172,4341,2909,2027,7355,5649,
			6701,6645,1671,5978,2704,9926,295,3125,3878,6785,
			2066,4247,4800,1578,6652,4616,1113,6205,3264,2915,
			3966,5291,2904,1285,2193,1428,2265,8730,9436,7074,
			689,5510,8243,6114,337,4096,8199,7313,3685,211};
	int b[10];
	int c[30];
	int d[100];
	memset(b,0,sizeof(b));
	for(int i=0;i<100;i++){
		do{
			if(a[i]%5==0){
				cnt1++;
				a[i]=a[i]/5;
			} 			
		}while(a[i]%5==0);
	}
	for(int i=0;i<100;i++){
	do{
		if(a[i]%2==0){
			cnt2++;
			a[i]=a[i]/2;
		} 			
	}while(a[i]%2==0);
	}
	cout<<cnt1<<"    "<<cnt2<<endl;
	return 0;
}

4. 标题:测试次数

x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。

x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。

如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n

为了减少测试次数,从每个厂家抽样3部手机参加测试。

某次测试的塔高为1000层,如果我们总是采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?

请填写这个最多测试次数。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值