2018蓝桥杯试题_共15页
蓝桥杯历届c语言试题及答案

蓝桥杯历届c语言试题及答案蓝桥杯历届C语言试题及答案1. 问题描述编写一个程序,实现对给定整数数组进行排序的功能。
2. 输入格式第一行包含一个整数N,表示数组中元素的数量。
第二行包含N个整数,表示数组中的元素。
3. 输出格式输出排序后的数组。
4. 样例输入```53 14 1 5```5. 样例输出```1 1 3 4 5```6. 答案```c#include <stdio.h>#include <stdlib.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int partition(int arr[], int low, int high) { int pivot = arr[high];int i = (low - 1);for (int j = low; j <= high - 1; j++) {if (arr[j] < pivot) {i++;swap(&arr[i], &arr[j]);}}swap(&arr[i + 1], &arr[high]);return (i + 1);}void quickSort(int arr[], int low, int high) { if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}}int main() {int N;scanf("%d", &N);int arr[N];for (int i = 0; i < N; i++) { scanf("%d", &arr[i]);}quickSort(arr, 0, N - 1);for (int i = 0; i < N; i++) { printf("%d ", arr[i]);}return 0;}```。
蓝桥杯练习系统题目汇总(K12教育文档)

(完整word版)蓝桥杯练习系统题目汇总(word版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)蓝桥杯练习系统题目汇总(word版可编辑修改))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)蓝桥杯练习系统题目汇总(word版可编辑修改)的全部内容。
蓝桥杯练习系统题目汇总:入门训练1. Fibonacci数列问题描述Fibonacci数列的递推公式为:F n=F n—1+F n-2,其中F1=F2=1.当n比较大时,F n也非常大,现在我们想知道,F n除以10007的余数是多少。
输入格式输入包含一个整数n。
输出格式输出一行,包含一个整数,表示F n除以10007的余数.说明:在本题中,答案是要求F n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单.样例输入10样例输出55样例输入22样例输出7704数据规模与约定1 〈= n 〈= 1,000,000。
参考代码:c++1.#include〈stdlib.h〉2.#include<stdio。
h>3.#define MOD 100074.#define MAXN 10000015.int n,i, F[MAXN];6.int main()7.{8.scanf(”%d",&n);9.F[1]= 1;10.F[2]= 1;11.for(i = 3;i <= n;++i)12.F[i]= (F[i-1] + F[i-2])%MOD;13.printf(”%d\n”,F[n]);14.return0;15.}java:1.import java。
2018蓝桥杯试题

2018蓝桥杯C语言b组国赛真题1.标题:换零钞x星球的钞票的面额只有:100元,5元,2元,1元,共4种。
小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。
小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,剩下的当然都是5元面额的。
银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?(5元,2元,1元面额的必须都有,不能是0)注意,需要提交的是一个整数,不要填写任何多余的内容。
手算都可以。
下面是代码,答案741.#include<iostream>ing namespace std;3.int main(){4.for(int i=1;i<40;i++){5.for(int j=1;j<200;j++){6.if(5*i+2*10*j+1*j==200)7.cout<<"5*"<<i<<"+2*"<<10*j<<"+1*"<<j<<"="<<5*i+2*10*j+1*j<<"(一共"<<i+10*j+j<<"张)"<<endl;8.}9.}10.return 0;11.}12.2.标题:激光样式x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。
安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?显然,如果只有3台机器,一共可以成5种样式,即:全都关上(sorry, 此时无声胜有声,这也算一种)开一台,共3种开两台,只1种30台就不好算了,国王只好请你帮忙了。
蓝桥杯题库的历届真题

1.历届试题矩阵翻硬币时间限制:1.0s 内存限制:256.0MB问题描述小明先把硬币摆成了一个n 行m 列的矩阵。
随后,小明对每一个硬币分别进行一次Q 操作。
对第x行第y列的硬币进行Q 操作的定义:将所有第i*x 行,第j*y 列的硬币进行翻转。
其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。
当小明对所有硬币都进行了一次Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。
小明想知道最开始有多少枚硬币是反面朝上的。
于是,他向他的好朋友小M寻求帮助。
聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。
然而小明很懒,不愿意照做。
于是小明希望你给出他更好的方法。
帮他计算出答案。
输入格式输入数据包含一行,两个正整数n m,含义见题目描述。
输出格式输出一个正整数,表示最开始有多少枚硬币是反面朝上的。
样例输入2 3样例输出1数据规模和约定对于10%的数据,n、m <= 10^3;对于20%的数据,n、m <= 10^7;对于40%的数据,n、m <= 10^15;对于10%的数据,n、m <= 10^1000(10的1000次方)。
2.历届试题兰顿蚂蚁时间限制:1.0s 内存限制:256.0MB问题描述兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。
平面上的正方形格子被填上黑色或白色。
在其中一格正方形内有一只“蚂蚁”。
蚂蚁的头部朝向为:上下左右其中一方。
蚂蚁的移动规则十分简单:若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。
规则虽然简单,蚂蚁的行为却十分复杂。
刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的“高速公路”。
蚂蚁的路线是很难事先预测的。
你的任务是根据初始状态,用计算机模拟兰顿蚂蚁在第n步行走后所处的位置。
Python2018蓝桥杯真题练习—哪天返回

Python2018蓝桥杯真题练习—哪天返回
问题描述
小明被不明势力劫持。
后莫名其妙被扔到x星站再无问津。
小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。
他决定在x星战打工。
好心的老板答应包食宿,第1天给他1元钱。
并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。
请计算一下,小明在第几天就能凑够108元,返回地球。
要求提交的是一个整数,表示第几天。
解决方案
本题的理解程度不难,是对于基础知识的理解应用,在设置未知数的同时通过循环做出判断,并在循环中解出要计算的未知数,本题只是通过基础的一次循环就可以得到解题答案,不需要做过多的理解与复杂的重复返回计算。
只需要注意while循环的注意事项就可以
结语
学习并练习蓝桥杯竞赛的真题,理解题目的意义,在解题过程中,复习while 循环的使用。
本题不需要做多的理解和太复杂的代码去解释题目的答案。
继续练习蓝桥杯真题。
实习编辑:衡辉
稿件来源:深度学习与文旅应用实验室(DLETA)。
历年蓝桥杯省赛B组真题试题

for(j = 0 ; j < 4 ; j ++) flag[i][j] = 1;
flag[0][0] = 0; flag[2][3] = 0; }
void Solve() {
int dir[8][2] = { 0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1}; int book = true; for(int i = 0 ; i < 3 ; i ++) {
int main() {
int i; int a[] = {5,13,6,24,2,8,19,27,6,12,1,17}; int N = 12;
quicksort(a, 0, N -1);
for(i=0; i<N; i++) printf("%d ", a[i]); printf("\n");
return 0; }
num[n]=0;
}
}
}
int main() {
memset(num,0,sizeof(num)); memset(visit,0,sizeof(visit)); dfs(1); cout<<sum; return 0; }
4 / 19
(4) 快速排序
历年蓝桥杯省赛 B 组真题试题
排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。
if(!visit[i]) {
visit[i] = true; mpt[x][y] = i; dfs(index+1); visit[i] = false; } } } else { dfs(index+1); } } int main() { init(); dfs(0); printf("%d\n",ans); return 0; }
蓝桥杯算法训练习题与官方答案

算法训练编号:ALGO-1题目:区间k大数查询列关键字:排序查找类型:普通试题问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。
输入格式第一行包含一个数n,表示序列长度。
第二行包含n个正整数,表示给定的序列。
第三个包含一个正整数m,表示询问个数。
接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。
序列元素从1开始标号。
输出格式总共输出m行,每行一个数,表示询问的答案。
样例输入51 2 3 4 521 5 22 3 2样例输出42数据规模与约定对于30%的数据,n,m<=100;对于100%的数据,n,m<=1000;保证k<=(r-l+1),序列中的数<=1000000。
本题的Java参考代码如下:import java.io.BufferedInputStream;import java.io.IOException;import java.util.Arrays;public class Main{private static BufferedInputStream in = new BufferedInputStream(System.in);public static void main(String[] args) throws IOException{int[] nums = new int[readInt()];for(int i=0; i<nums.length; i++){nums[i] = readInt();}for(int i=readInt(); i>0; i--){int a = readInt();int b = readInt();int c = readInt();int[] tn = new int[b-a+1];for(int j=0; j<tn.length; j++){tn[j] = nums[a-1+j];}Arrays.sort(tn);System.out.println(tn[tn.length-c]);}}private static int readInt() throws IOException{int i,sum=0;while(((i=in.read())&48) != 48 || i>57);for(;(i&56) == 48 || (i&62) == 56; i=in.read())sum = sum*10 + (i&15);return sum;}}编号:ALGO-2题目:最大最小公倍数关键字:贪心类型:普通试题问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
测试次数——2018年蓝桥杯算法真题

测试次数——2018年蓝桥杯算法真题x星球的居民脾⽓不太好,但好在他们⽣⽓的时候唯⼀的异常举动是:摔⼿机。
各⼤⼚商也就纷纷推出各种耐摔型⼿机。
x星球的质监局规定了⼿机必须经过耐摔测试,并且评定出⼀个耐摔指数来,之后才允许上市流通。
x星球有很多⾼耸⼊云的⾼塔,刚好可以⽤来做耐摔测试。
塔的每⼀层⾼度都是⼀样的,与地球上稍有不同的是,他们的第⼀层不是地⾯,⽽是相当于我们的2楼。
如果⼿机从第7层扔下去没摔坏,但第8层摔坏了,则⼿机耐摔指数=7。
特别地,如果⼿机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最⾼层第n层扔没摔坏,则耐摔指数=n为了减少测试次数,从每个⼚家抽样3部⼿机参加测试。
某次测试的塔⾼为1000层,如果我们总是采⽤最佳策略,在最坏的运⽓下最多需要测试多少次才能确定⼿机的耐摔指数呢?请填写这个最多测试次数。
代码如下:public class Main {public static void main(String[] args) {int height = 1000;int phone = 3;// 定义⼀个⼆维数组int dp[][]=new int[height + 1][phone + 1];for (int n = 1; n <= phone; n++) {for (int i = 1; i <= height; i++) {// 如果是⼀部⼿机或者⼀层楼的话,那么问题就可以简单的解决了,即 dp[i][n] = dp[i - 1][n] + 1// 这⾥是最坏的情况,但不是最佳策略(⼏层楼测试⼏次)dp[i][n] = dp[i - 1][n] + 1;// 下⾯的循环则是采⽤最佳策略min,在最坏情况下的测试次数max// 如果⼿机和楼层都超过1,那么就要采⽤下⾯的决策,下⾯的循环是问题的突破⼝for (int j = 1; j < i && n > 1; j++) {// 从第⼀层⼀直测试到第i层,看看在哪⼀层是最符合的dp[i][n] = Math.min(dp[i][n], Math.max(dp[j - 1][n - 1], dp[i - j][n]) + 1);}}}System.out.println(dp[1000][3]);}}解决问题的关键:①从最佳和最坏两个⾓度出发②摔⼿机的结果⽆⾮两种:碎和不碎,可分情况讨论,取更坏者(即测试次数多者)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当产生第奇数个数时,只把当前数字最末位改变(0 变 1,1 变 0)
当产生第偶数个数时,先找到最右边的一个 1,把它左边的数字改变。
用这个规则产生的 4 位格雷码序列如下:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
16.
int a = 0;
17.
for(i=0; i<num; i++){
18.
show(a,n);
19.
if(i%2==0){
20.
a = a ^ 1;
21.
}
22.
else{
23.
a = _________________________ ; //填空
24.
}
25.
}
26.}
27.int main(){
26.
dfs(0);
27.
cout<<ans<<endl;
28.
return 0;
29.}
3.标题:格雷码
格雷码是以 n 位的二进制来表示数。
与普通的二进制表示不同的是,它要求相邻两个数字只能有 1 个数位不同。
首尾两个数字也要求只有 1 位之差。
有很多算法来生成格雷码。以下是较常见的一种:
从编码全 0 开始生成。
7. void dfs(int index){
8.
if(index == 30){
9.
ans++;
10.
return;
11.
}
12.
if(index == 0 || x[index-1] == 0){ //第一个灯光可以取 0 或 1,当前
灯光左边要是没开,那当前灯光可以取 0 和 1
13.
for(int i=0;i<=1;i++){
规则 2:同一层中的积木必须连续摆放,中间不能留有空隙; 规则 3:小明不喜欢的位置不能放置积木。 其中,小明不喜欢的位置都被标在了图纸上。图纸共有 n 行,从下至上的每一 行分别对应积木的第 1 层至第 n 层。每一行都有 m 个字符,字符可能是‘.’ 或‘X’,其中‘X’表示这个位置是小明不喜欢的。 现在,小明想要知道,共有多少种放置积木的方案。他找到了参加蓝桥杯的你 来帮他计算这个答案。 由于这个答案可能很大,你只需要回答这个答案对 1000000007(十亿零七)取 模后的结果。 注意:地基上什么都不放,也算作是方案之一种。 【输入格式】 输入数据的第一行有两个正整数 n 和 m,表示图纸的大小。 随后 n 行,每行有 m 个字符,用来描述图纸 。每个字符只可能是‘.’或 ‘X’。 【输出格式】 输出一个整数,表示答案对 1000000007 取模后的结果。 【样例输入 1】 23 ..X .X. 【样例输出 1】 4
28.
f(4);
29.
return 0;
30.}
请注意:只需要填写划线部分缺少的内容,不要抄写已有的代码或符号。 4.标题:调手表 小明买了块高端大气上档次的电子手表,他正准备调时间呢。 在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。
大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果 当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前 的数是 n - 1,按一次后会变成 0 。 作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时 间多 1,则要按 n - 1 次加一按钮才能调回正确时间。 小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多好啊……
1191 1 4 1 16 小明突然冒出一个奇怪的想法,他想知道这张表中所有元素的和。 由于表过于庞大,他希望借助计算机的力量。 「输入格式」 一行一个正整数 n 意义见题。 「输出格式」 一行一个数,表示所有元素的和。由于答案比较大,请输出模 (10^9 + 7)(即: 十亿零七) 后的结果。 「样例输入」 4 「样例输出」 48 「数据范围」 对于 30% 的数据,n <= 1000 存在 10% 的数据,n = 10^5 对于 60% 的数据,n <= 10^6 对于 100% 的数据,n <= 10^7 资源约定: 峰值内存消耗(含虚拟机) < 256M CPU 消耗 < 2000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
显然,如果只有 3 台机器,一共可以成 5 种样式,即:
全都关上(sorry, 此时无声胜有声,这也算一种)
开一台,共 3 种
开两台,只 1 种
30 台就不好算了,国王只好请你帮忙了。
要求提交一个整数,表示 30 台激光器能形成的样式种数。
注意,只提交一个整数,不要填写任何多余的内容。
思路很简单,暴力搜索,30 个灯光从左到右,从左边第一个开始,第一个可以
注意: main 函数需要返回 0; 只使用 ANSI C/ANSI C++ 标准; 不要调用依赖于编译环境或操作系统的特殊函数。 所有依赖的函数必须明确地在源文件中 #include <xxx> 不能通过工程设置而省略常用头文件。 提交程序时,注意选择所期望的语言类型和编译器类型。
6.
for(i=0; i<n; i++){
7.
printf((a & msk)? "1" : "0");
8.
msk = msk >> 1;
9.
}
10.
printf("\n");
11.}
12.void f(int n){
13.
int i;
14.
int num = 1;
15.
for(i=0; i<n; i++) num = num<<1;
对于 30% 的数据 0 < k < n <= 5 对于 60% 的数据 0 < k < n <= 100 对于 100% 的数据 0 < k < n <= 100000 资源约定: 峰值内存消耗(含虚拟机) < 256M CPU 消耗 < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 注意: main 函数需要返回 0; 只使用 ANSI C/ANSI C++ 标准; 不要调用依赖于编译环境或操作系统的特殊函数。 所有依赖的函数必须明确地在源文件中 #include <xxx> 不能通过工程设置而省略常用头文件。 提交程序时,注意选择所期望的语言类型和编译器类型。 5.标题:搭积木 小明对搭积木非常感兴趣。他的积木都是同样大小的正立方体。 在搭积木时,小明选取 m 块积木作为地基,将他们在桌子上一字排开,中间不 留空隙,并称其为第 0 层。 随后,小明可以在上面摆放第 1 层,第 2 层,……,最多摆放至第 n 层。摆放 积木必须遵循三条规则: 规则 1:每块积木必须紧挨着放置在某一块积木的正上方,与其下一层的积木 对齐;
2018 蓝桥杯 C 语言 b 组国赛真题
1.标题:换零钞
x 星球的钞票的面额只有:100 元,5 元,2 元,1 元,共 4 种。
小明去 x 星旅游,他手里只有 2 张 100 元的 x 星币,太不方便,恰好路过 x 星
0 元换出的零钞中 2 元的张数刚好是 1 元的张
开关,第二个要根据左边的灯光是否开启来取值,以此类推。。。 答案
2178309
1. #include<iostream> 2. #include<string.h> 3. using namespace std; 4. int ans = 0;
5. int x[31];//0 代表关,1 代表开
6.
他想知道,如果有了这个 +k 按钮,按照最优策略按键,从任意一个分钟数调 到另外任意一个分钟数最多要按多少次。 注意,按 +k 按钮时,如果加 k 后数字超过 n-1,则会对 n 取模。 比如,n=10, k=6 的时候,假设当前时间是 0,连按 2 次 +k 按钮,则调为 2。
「输入格式」 一行两个整数 n, k ,意义如题。 「输出格式」 一行一个整数 表示:按照最优策略按键,从一个时间调到另一个时间最多要按多少次。 「样例输入」 53 「样例输出」 2 「样例解释」 如果时间正确则按 0 次。否则要按的次数和操作系列之间的关系如下: 1:+1 2:+1, +1 3:+3 4:+3, +1 「数据范围」
共"<<i+10*j+j<<"张)"<<endl;
8. 9. 10. 11.}
} } return 0;
12.2.标题:激光样式 x 星球的盛大节日为增加气氛,用 30 台机光器一字排开,向太空中打出光柱。
安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开! 国王很想知道,在目前这种 bug 存在的情况下,一共能打出多少种激光效果?
数的 10 倍,
剩下的当然都是 5 元面额的。
银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要
换给他多少张钞票吗?
(5 元,2 元,1 元面额的必须都有,不能是 0)
注意,需要提交的是一个整数,不要填写任何多余的内容。
手算都可以。。。下面是代码,答案 74