2017蓝桥杯省赛赛前集训题(共14题)

合集下载

第六届蓝桥杯程序设计大赛题目及答案

第六届蓝桥杯程序设计大赛题目及答案

第六届省赛1.方程整数解方程: a^2 + b^2 + c^2 = 1000(或参见【图1.jpg】)这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。

你能算出另一组合适的解吗?请填写该解中最小的数字。

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

10#include<stdio.h>int main(){int a,b,c;for(a=1;a*a<=1000;a++){for(b=1;b*b<=1000;b++){for(c=1;c*c<=1000;c++){if(a*a+b*b+c*c==1000){printf("%d %d %d\n",a,b,c);}}}}return 0;}2.星系炸弹在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。

比如:2015-02-19 请严格按照格式书写。

不能出现其它文字或符号。

2017-08-05#include <stdio.h>int main(){int monthDays[12]={31,28,31,30,31,30,31,31,30,31,30,31};int days=1000;int year=2014, month=11, day=9;int i;for(i=0;i<days;i++){day++;if(day>monthDays[month-1]){day=1;month++;if(month>12){month=1;year++;if((year%400==0) ||(year%4==0 && year%100!=0))monthDays[1]=29;elsemonthDays[1]=28;}}}printf("%d-%d-%d\n",year,month,day);getchar();return 0;}3.奇妙的数字小明发现了一个奇妙的数字。

蓝桥杯部分题目(含答案)

蓝桥杯部分题目(含答案)

1、未名湖边的烦恼关键词:递归,蓝桥杯,算法问题描述每年冬天,北大未名湖上都是滑冰的好地方。

北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。

每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。

现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。

(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式两个整数,表示m和n输出格式一个整数,表示队伍的排法的方案数。

样例输入3 2样例输出5数据规模和约定m,n∈[0,18]#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"#include "map"using namespace std;int f(int m,int n){if(m<n) return 0;if(n==0) return 1;return f(m,n-1)+f(m-1,n);}int main(){int m,n;scanf("%d%d",&m,&n);int ans=f(m,n);printf("%d\n",ans);return 0;}2.标题:蚂蚁感冒关键词:结构体排序,蓝桥杯【题目描述】长100厘米的细长直杆子上有n只蚂蚁。

它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有1只蚂蚁感冒了。

并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

【数据格式】第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

蓝桥杯试题及答案

蓝桥杯试题及答案

蓝桥杯试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个不是Python的内置数据类型?A. intB. floatC. stringD. list答案:D二、填空题1. 在C语言中,定义一个整型变量的关键字是________。

答案:int2. 在JavaScript中,用于定义函数的关键字是________。

答案:function三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。

答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势。

例如,对于一个简单的线性搜索算法,如果数组中有n个元素,最坏情况下需要比较n次,因此其时间复杂度是O(n)。

2. 请解释什么是栈,并给出一个栈的应用场景。

答案:栈是一种后进先出(LIFO)的数据结构,允许在一端进行数据的添加和删除操作。

一个常见的栈的应用场景是函数调用的实现,在编程中,每当调用一个函数,就会将函数的返回地址和局部变量压入栈中,待函数执行完毕后再从栈中弹出。

四、编程题1. 编写一个函数,实现对一个整数数组进行排序。

答案:```javapublic static void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}```2. 编写一个程序,实现计算一个字符串中所有元音字母的数量。

答案:```pythondef count_vowels(s):vowels = "aeiouAEIOU"return sum(1 for char in s if char in vowels)# 示例print(count_vowels("Hello World")) # 输出应该是 3```五、案例分析题1. 描述一个场景,其中使用二叉搜索树(BST)比使用数组更有效,并解释原因。

蓝桥杯c-c++省赛试题及答案解析

蓝桥杯c-c++省赛试题及答案解析

2016蓝桥杯c-c++B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。

具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。

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

答案:171700#include<stdio.h>int main(){int a[101] ={0};for(int i = 1 ; i < 101 ; i ++)a[i] = a[i-1] + i;int ans = 0;for(int j = 1 ; j < 101 ; j ++)ans += a[j];printf("%d\n",ans);return 0;}第二题生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。

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

请问,他从多少岁开始过生日party的?请填写他开始过生日party的年龄数。

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

答案:26#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;}第三题凑算式B DEFA + --- + ------- = 10C GHI(如果显示有问题,可以参见【图1.jpg】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

蓝桥杯训练试题及答案

蓝桥杯训练试题及答案

蓝桥杯训练试题及答案1. 单项选择题请从以下选项中选择最符合题意的答案。

(1) 以下哪个选项是Python语言的解释器?A. JavaB. Node.jsC. PythonD. Ruby答案:C(2) 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <p>D. <div>答案:A2. 多项选择题请从以下选项中选择所有符合题意的答案。

(1) 以下哪些是数据结构中的基本概念?A. 栈B. 队列C. 树D. 循环答案:A, B, C(2) 在JavaScript中,哪些关键字用于声明变量?A. varB. letC. constD. function答案:A, B, C3. 判断题请判断以下陈述是否正确。

(1) 在C语言中,数组的索引从1开始。

答案:错误(2) 在数据库中,主键用于唯一标识表中的每条记录。

答案:正确4. 填空题请根据题目要求填写适当的内容。

(1) 在Python中,用于定义函数的关键字是____。

答案:def(2) 在HTML中,用于插入图片的标签是____。

答案:<img>5. 简答题请简要回答以下问题。

(1) 什么是算法的时间复杂度?答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势,通常用大O表示法来描述。

(2) 请简述面向对象编程的三大特性。

答案:面向对象编程的三大特性包括封装性、继承性和多态性。

6. 编程题请编写一个函数,实现将输入的字符串反转。

(1) 编程语言:Python答案:```pythondef reverse_string(s):return s[::-1]```(2) 编程语言:JavaScript答案:```javascriptfunction reverseString(s) {return s.split('').reverse().join('');}```。

蓝桥杯历年真题你刷了吗?过来人教你逆袭!

蓝桥杯历年真题你刷了吗?过来人教你逆袭!

蓝桥杯历年真题你刷了吗?过来⼈教你逆袭!蓝桥杯报名已经开始,你做好准备了吗?在参赛报名前,⼀定要做好充⾜的准备,除了学习算法等基础知识外,还要学会实战。

今天,我带来2017年蓝桥杯省赛真题,欢迎⼤家⼀起来做刷题哦~单独戳我或移步⼯粽号:蓝桥云课,即可免费得蓝桥杯真题库!(PS:千万别只看不思考不敲代码!)01 蓝桥杯省赛真题本题为填空题,只需要算出结果后,在代码中使⽤输出语句将所填结果输出即可。

X 星球的⼀处迷宫游乐场建在某个⼩⼭坡上。

它是由 10x10 相互连通的⼩房间组成的。

房间的地板上写着⼀个很⼤的字母。

我们假设玩家是⾯朝上坡的⽅向站⽴,则:L 表⽰⾛到左边的房间;R 表⽰⾛到右边的房间;U 表⽰⾛到上坡⽅向的房间;D 表⽰⾛到下坡⽅向的房间。

X星球的居民有点懒,不愿意费⼒思考。

他们更喜欢玩运⽓类的游戏。

这个游戏也是如此!开始的时候,直升机把 100 名玩家放⼊⼀个个⼩房间内。

玩家⼀定要按照地上的字母移动。

迷宫地图如下:UDDLUULRULUURLLLRRRURRUURLDLRDRUDDDDUUUUURUDLLRRUUDURLRLDLRLULLURLLRDURDLULLRDDDUUDDUDUDLLULRDLUURRR请你计算⼀下,最后,有多少玩家会⾛出迷宫? ⽽不是在⾥边兜圈⼦。

如果你还没明⽩游戏规则,可以参看下⾯⼀个简化的 4x4 迷宫的解说图:02 解题思路(1)投机取巧式根据“考⽣须知”,这题是填空题,只交答案就⾏了。

如果不想编码,直接⽤⼿⼀个个去数那 100 个点,⼏分钟就数完了,答案是 31,⽐编码还要快。

(2) DFS 编码⼀道搜索题,可以选择 dfs,代码简短。

#include <iostream>using namespace std;#include<vector>#include<string>using namespace std;int ans;vector<vector<char>>s={{'U','D','D','L','U','U','L','R','U','L'},{'U','U','R','L','L','L','R','R','R','U'},{'R','R','U','U','R','L','D','L','R','D'},{'R','U','D','D','D','D','U','U','U','U'},{'U','R','U','D','L','L','R','R','U','U'},{'D','U','R','L','R','L','D','L','R','L'},{'U','L','L','U','R','L','L','R','D','U'},{'R','D','L','U','L','L','R','D','D','D'},{'U','U','D','D','U','D','U','D','L','L'},{'U','L','R','D','L','U','U','R','R','R'}};bool vis[100][100];void dfs(int x,int y){if(vis[x][y] == true)return;if(x<0||y<0||x>=s.size() || y>=s[x].size()){ans++;return;}switch (s[x][y]){case 'U':vis[x][y]= true;dfs(x-1,y);vis[x][y]= false;break;case 'L':vis[x][y]= true;dfs(x,y-1);vis[x][y]= false;break;case 'R':vis[x][y]= true;dfs(x,y+1);vis[x][y]= false;break;case 'D':vis[x][y]= true;dfs(x+1,y);vis[x][y]= false;break;default:return;}}void has_Path(){for(int i=0;i<s.size();++i)for(int j=0;j<s[i].size();++j)dfs(i,j);}int main(){has_Path();cout<<ans;}今天的蓝桥杯真题刷题就到这⾥了,后续我也会不定期更新蓝桥杯真题讲解。

[2017年整理]第三届蓝桥杯预赛真题及详细答案

[2017年整理]第三届蓝桥杯预赛真题及详细答案

第三届蓝桥桥杯预赛真题及详细答案一、微生物增殖假设有两种微生物X 和YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。

一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。

现在已知有新出生的X=10, Y=89,求60分钟后Y的数目。

如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。

题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只Y 就是最终导致Y 种群灭绝的最后一根稻草!请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!答案:0 和94371840(此题比较简单就不写程序了,以下均有程序)二、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。

请你利用计算机的优势,找到破解的答案。

把ABCDE 所代表的数字写出来。

答案写在“解答.txt”中,不要写在这里!参考答案:21978参考程序:#include<stdio.h>void main(){int k,t1 ,t;for(k=10234;k<50000;k++){bool flag[10]={0};t=k;t1=0;while(t){if(flag[t%10])break ;flag[t%10] = true ;t1 = t1*10 + t%10 ;t /= 10 ;}if( t==0 && t1%k==0){printf("%d * %d = %d\n",k,t1/k,t1);}}三、比酒量有一群海盗(不多于20人),在船上比拼酒量。

过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。

[蓝桥杯][2017年第八届真题]包子凑数

[蓝桥杯][2017年第八届真题]包子凑数

[蓝桥杯][2017年第⼋届真题]包⼦凑数[蓝桥杯][2017年第⼋届真题]包⼦凑数 题⽬;题⽬描述⼩明⼏乎每天早晨都会在⼀家包⼦铺吃早餐。

他发现这家包⼦铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包⼦。

每种蒸笼都有⾮常多笼,可以认为是⽆限笼。

每当有顾客想买X个包⼦,卖包⼦的⼤叔就会迅速选出若⼲笼包⼦来,使得这若⼲笼中恰好⼀共有X个包⼦。

⽐如⼀共有3种蒸笼,分别能放3、4和5个包⼦。

当顾客想买11个包⼦时,⼤叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。

当然有时包⼦⼤叔⽆论如何也凑不出顾客想买的数量。

⽐如⼀共有3种蒸笼,分别能放4、5和6个包⼦。

⽽顾客想买7个包⼦时,⼤叔就凑不出来了。

⼩明想知道⼀共有多少种数⽬是包⼦⼤叔凑不出来的。

输⼊第⼀⾏包含⼀个整数N。

(1 <= N <= 100)以下N⾏每⾏包含⼀个整数Ai。

(1 <= Ai <= 100)输出⼀个整数代表答案。

如果凑不出的数⽬有⽆限多个,输出INF。

样例输⼊245样例输出6假设现有的数是4,5; 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25;可以肯定的4后⾯的数都是⽆法凑出的,那么4,5的倍数可以这样凑;8:4 49: 4 510:5 512:8 413:8 514:10 415:10 516:12 417:13 418:14 419:15 420:16 421:16 522:18 423:18 524:20 425:20 5 可以看出这些数可以有之前凑得出的数加上题⽬所给的数,能凑出,因此只要记录下这些并且逆向循环(为什么是逆向的呢?因为逆向循环可以节约⼀些时间,逆向都是⼤到⼩,从⼤的加上题⽬所给数很容易能凑出,若是从⼩到⼤,循环次数会加多) 这些数可以最多循环到题⽬所给数的最⼤的哪⼀个的倍数就好了,因为接下来的数都可以通过之前的数的倍数得到,或者倍数倍数得到。

【2017年整理】第五届蓝桥杯预赛题目及答案

【2017年整理】第五届蓝桥杯预赛题目及答案

2014年第五届蓝桥杯预赛题目第一题标题:啤酒和饮料啤酒每罐2.3元,饮料每罐1.9元。

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

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

注意:答案是一个整数。

请通过浏览器提交答案。

不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。

第二题标题:切面条一根高筋拉面,中间切一刀,可以得到2根面条。

如果先对折1次,中间切一刀,可以得到3根面条。

如果连续对折2次,中间切一刀,可以得到5根面条。

那么,连续对折10次,中间切一刀,会得到多少面条呢?答案是个整数,请通过浏览器提交答案。

不要填写任何多余的内容。

第三题标题:李白打酒话说大诗人李白,一生好饮。

幸好他从不开车。

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

他边走边唱:无事街上走,提壶去打酒。

逢店加一倍,遇花喝一斗。

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

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。

则:babaabbabbabbbb 就是合理的次序。

像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

注意:通过浏览器提交答案。

答案是个整数。

不要书写任何多余的内容。

第四题标题:史丰收速算史丰收速算法的革命性贡献是:从高位算起,预测进位。

不需要九九表,彻底颠覆了传统手算!速算的核心基础是:1位数乘以多位数的乘法。

其中,乘以7是最复杂的,就以它为例。

因为,1/7 是个循环小数:0.142857...,如果多位数超过142857...,就要进1同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过n/7,就要进n下面的程序模拟了史丰收速算法中乘以7的运算过程。

乘以7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。

乘以7 的进位规律是:满142857 (1)满285714 (2)满428571 (3)满571428 (4)满714285 (5)满857142... 进6请分析程序流程,填写划线部分缺少的代码。

c++ 蓝桥杯集训题

c++ 蓝桥杯集训题

以下是一些 C++ 蓝桥杯集训题目,供您参考:
1. 字符串的排序:给定一个字符串,将字符串中的字符按照字典序排序,并输出排序后的字符串。

2. 数组的排序:给定一个整数数组,将数组中的元素按照升序排序,并输出排序后的数组。

3. 最大子序和:给定一个整数数组,求数组中最大的子序和。

4. 寻找最大值:给定一个整数数组,求数组中的最大值。

5. 链表的操作:给定一个链表的头节点,进行以下操作:插入节点、删除节点、查找节点、打印链表。

6. 二叉树的操作:给定一个二叉树的根节点,进行以下操作:插入节点、删除节点、查找节点、遍历二叉树(前序遍历、中序遍历、后序遍历)。

7. 动态规划:给定一个二维数组,求最大子矩阵和。

8. 回溯算法:给定一个字符串,判断该字符串是否是回文字符串。

9. 快速排序:给定一个整数数组,使用快速排序算法对其进行排序。

10. 二分查找:给定一个有序数组,查找指定元素在数组中的位置。

蓝桥杯c 试题及答案

蓝桥杯c 试题及答案

蓝桥杯c 试题及答案蓝桥杯是中国著名的计算机竞赛,由中国计算机学会主办,每年举办一次。

其中,C语言组是比赛的一个重要环节,考察选手对于C语言程序设计的理解和应用能力。

以下是蓝桥杯C语言组试题及答案的整理,供参赛选手参考和学习。

第一题:找素数题目描述:请编写一个程序,计算给定范围内的素数个数,并输出结果。

输入:输入两个正整数n和m(1 <= n, m <= 1000,n <= m),表示要计算的范围。

输出:输出一个整数,表示该范围内的素数个数。

样例输入:2 10样例输出:4解题思路:素数是指只能被1和自身整除的整数,根据这个定义,我们可以使用一个循环来判断每个数是否为素数。

具体实现时,首先需要判断一个数n是否为素数,可以从2开始将n除以每个数,若能整除则说明n 不是素数;反之,则n是素数。

将这个判断的逻辑封装成一个函数,然后在给定的范围内遍历每个数,统计出素数的个数即可。

代码实现:```c#include <stdio.h>int isPrime(int n) {if (n <= 1) {return 0;}for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return 0;}}return 1;}int countPrimes(int n, int m) {int count = 0;for (int i = n; i <= m; i++) {if (isPrime(i)) {count++;}}return count;}int main() {int n, m;scanf("%d %d", &n, &m);int result = countPrimes(n, m);printf("%d\n", result);return 0;}```参考答案如上所示,该程序通过调用判断素数的函数,并在给定范围内进行循环判断,最终输出结果。

第七届蓝桥杯省赛c组试题及答案

第七届蓝桥杯省赛c组试题及答案

第七届蓝桥杯省赛c组试题及答案第七届蓝桥杯省赛C组试题及答案1. 题目一:计算圆周率要求:编写一个程序,使用蒙特卡洛方法计算圆周率π的近似值。

解答:```pythonimport randomdef calculate_pi(num_samples):inside_circle = 0for _ in range(num_samples):x, y = random.random(), random.random()if x*x + y*y <= 1:inside_circle += 1return 4 * inside_circle / num_samplesprint(calculate_pi(1000000))```2. 题目二:字符串反转要求:编写一个函数,实现字符串反转的功能。

解答:```pythondef reverse_string(s):return s[::-1]print(reverse_string("hello"))```3. 题目三:寻找最大子数组和要求:给定一个整数数组,请找出其最大子数组和。

解答:```pythondef max_subarray_sum(nums):max_sum = nums[0]current_sum = nums[0]for num in nums[1:]:current_sum = max(num, current_sum + num)max_sum = max(max_sum, current_sum)return max_sumprint(max_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4])) ```4. 题目四:判断回文链表要求:给定一个链表,判断其是否为回文结构。

解答:```pythonclass ListNode:def __init__(self, value=0, next=None):self.val = valueself.next = nextdef is_palindrome(head):fast = slow = headprev = Nonewhile fast and fast.next:fast = fast.next.nextnext_node = slow.nextslow.next = prevprev = slowslow = next_nodeif fast:slow = slow.nextleft = headright = prevwhile left and right:if left.val != right.val: return Falseleft = left.nextright = right.nextreturn True# 示例链表构建和调用node1 = ListNode(1)node2 = ListNode(2)node3 = ListNode(2)node4 = ListNode(1)node1.next = node2node2.next = node3node3.next = node4print(is_palindrome(node1))```5. 题目五:二叉树的镜像要求:请完成一个函数,实现二叉树的镜像。

2017年蓝桥杯赛赛前集训题共14题

2017年蓝桥杯赛赛前集训题共14题

doublex;
ﻩfor(x=2;x<=3;x+=1e-7)

ﻩif(abs(pow(x,x)-10)<1e-6)
ﻩcout<<fixed<<setprecision(6)<<x;
ﻩ}
return 0;
}
答案:2.506184
其他类似题:ALGO-23一元三次方程求解
第3题(全排列)
注意:
全排列必考!
全排列必考!
全排列必考!
重要的事要说三遍!
李白打酒(2014年省赛本科B组第3题)
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。ﻫ逢店加一倍,遇花喝一斗。ﻫ这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。

voidperms(int p[],int start)

inti;
ﻩif(start==N-1)
{
int sum=2;
ﻩfor(i=0;i<N;i++)
ﻩﻩif(p[i]==1)
ﻩsum<<=1;
ﻩﻩelseif(p[i]==2)
ﻩﻩsum--;
ﻩif(sum==1)cnt++;//倒数第2次,剩1斗酒
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为yyyy-mm-dd即4位年份2位月份2位日期。比如:2015-02-19

蓝桥杯2017年_Java组_C语言组真题解析

蓝桥杯2017年_Java组_C语言组真题解析
• printf("%I64d",b%9);
• return 0;
•}
*02兴趣小组
• 为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小 组(以下称A组,B组,C组)。每个小组的学生名单分别在 【A.txt】,【B.txt】和【C.txt】中。每个文件中存储的是学生的 学号。由于工作需要,我们现在想知道:既参加了A组,又参加 了B组,但是没有参加C组的同学一共有多少人?

for(String s:split) {

String trim=s.trim();//去除空格

if(trim.length()>0)//去除空串

set.add(trim);//加入set}}
• reader.close();//读取结束}
• #include<set>#include<iostream>#include<fstream>//读文件
• long factor=(long) Math.pow(2,29);//扩大数据以防止精度丢失
• long [][]arr=new long[30][30];
• for(int i=0;i<29;i++) {
• for(int j=0;j<=i;j++) {

long a=sc.nextLong();

换}}
temp=a[k];a[k]=a[i];a[i]=temp;//递归结束后值回退,再两两交
• public static void main(String[] args) {
• f(0);//从0开始递归
• System.out.println(answer/6);}//去重复,3条边全排列一共6种

2017届蓝桥杯省赛考题

2017届蓝桥杯省赛考题

2017第八届蓝桥杯Java省赛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折**** 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折**** 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%计算,余者类推。

蓝桥杯试题及答案

蓝桥杯试题及答案

蓝桥杯试题及答案蓝桥杯是面向全国高校计算机专业学生的程序设计竞赛,由工业和信息化部人才交流中心主办,旨在提高学生的编程能力、算法设计能力以及团队合作能力。

以下是一份蓝桥杯试题及答案的示例,供参考。

### 蓝桥杯程序设计竞赛试题及答案#### 题目一:求最大公约数题目描述:给定两个正整数 a 和 b,请编写一个程序计算它们的最大公约数(GCD)。

输入格式:输入包含两个整数 a 和 b,用空格分隔。

输出格式:输出 a 和 b 的最大公约数。

样例输入:```24 36```样例输出:``````答案:```c#include <stdio.h>int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}int main() {int a, b;scanf("%d %d", &a, &b);printf("%d\n", gcd(a, b));return 0;}```#### 题目二:字符串反转题目描述:编写一个程序,实现对输入的字符串进行反转。

输入格式:输入一个字符串。

输出格式:输出反转后的字符串。

样例输入:```Hello World```样例输出:`````ldrow olleH```答案:```c#include <stdio.h>#include <string.h>int main() {char str[1000];scanf("%s", str);int len = strlen(str);for (int i = len - 1; i >= 0; i--) { printf("%c", str[i]);}return 0;}```#### 题目三:二分查找题目描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。

2017年蓝桥杯B组CC++决赛题目

2017年蓝桥杯B组CC++决赛题目

2017年蓝桥杯B组CC++决赛题⽬2017年第⼋届蓝桥杯B组C/C++决赛题⽬1.36进制对于16进制,我们使⽤字母A-F来表⽰10及以上的数字。

如法炮制,⼀直⽤到字母Z,就可以表⽰36进制。

36进制中,A表⽰10,Z表⽰35,AA表⽰370你能算出 MANY 表⽰的数字⽤10进制表⽰是多少吗?请提交⼀个整数,不要填写任何多余的内容(⽐如,说明⽂字)2.磁砖样式⼩明家的⼀⾯装饰墙原来是 3*10 的⼩⽅格。

现在⼿头有⼀批刚好能盖住2个⼩⽅格的长⽅形瓷砖。

瓷砖只有两种颜⾊:黄⾊和橙⾊。

⼩明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。

⼩明有个⼩⼩的强迫症:忍受不了任何22的⼩格⼦是同⼀种颜⾊。

(瓷砖不能切割,不能重叠,也不能只铺⼀部分。

另外,只考虑组合图案,请忽略瓷砖的拼缝)显然,对于 23 个⼩格⼦来说,⼝算都可以知道:⼀共10种贴法,如【p1.png所⽰】但对于 3*10 的格⼦呢?肯定是个不⼩的数⽬,请你利⽤计算机的威⼒算出该数字。

注意:你需要提交的是⼀个整数,不要填写任何多余的内容(⽐如:说明性⽂字)3.希尔伯特曲线希尔伯特曲线是以下⼀系列分形曲线 Hn 的极限。

我们可以把 Hn 看作⼀条覆盖 2^n × 2^n ⽅格矩阵的曲线,曲线上⼀共有 2^n × 2^n 个顶点(包括左下⾓起点和右下⾓终点),恰好覆盖每个⽅格⼀次。

Hn(n > 1)可以通过如下⽅法构造:1. 将 Hn-1 顺时针旋转90度放在左下⾓2. 将 Hn-1 逆时针旋转90度放在右下⾓3. 将2个 Hn-1 分别放在左上⾓和右上⾓4. ⽤3条单位线段把4部分连接起来对于 Hn 上每⼀个顶点 p ,我们定义 p 的坐标是它覆盖的⼩⽅格在矩阵中的坐标(左下⾓是(1, 1),右上⾓是(2^n, 2^n),从左到右是X轴正⽅向,从下到上是Y轴正⽅向),定义 p 的序号是它在曲线上从起点开始数第⼏个顶点(从1开始计数)。

2017年蓝桥杯省赛赛前集训题(共14题)

2017年蓝桥杯省赛赛前集训题(共14题)

2017年蓝桥杯省赛赛前集训题(共14题)D}while(next_permutation(s.begin(),s.end()));cout<<cnt;return 0;}解法4:递归解法#include<iostream>using namespace std;int cnt=0;void f(int a,int b,int c)//a个店,b朵花,c升酒{if(a>5||b>9) return;f(a+1,b,c*2);f(a,b+1,c-1);if(a==5&&b==9&&c==1)cnt++;}int main(){f(0,0,2);cout<<cnt<<endl;}第4题(逻辑推理题)练习系统ADV-143 扶老奶奶过街•一共有5个红领巾,编号分别为A、B、C、D、E,老奶奶被他们其中一个扶过了马路。

五个红领巾各自说话:A :我和E都没有扶老奶奶B :老奶奶是被C和E其中一个扶过大街的C :老奶奶是被我和D其中一个扶过大街的D :B和C都没有扶老奶奶过街E :我没有扶老奶奶已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街?若有多个答案,在一行中输出,编号之间用空格隔开例如A B C D E(这显然不是正确答案)解法1--位运算#include <iostream>using namespace std;#define N 5int main(){int i,j,t,a[N];for (i = 0x10; i >0; i>>=1){t=i;for (j = N-1; j >= 0; j--){a[j] = t & 1;t>>=1;}//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (j = 0; j < N; j++){if(a[j]) cout<<char('A'+j)<<' ';}}}return 0;}解法2-全排列#include<iostream>#include<algorithm>using namespace std;#define N 5int main(){int a[N]={1,0,0,0,0};//1扶了。

2017年蓝桥杯省赛A组c++第7题(正则问题)

2017年蓝桥杯省赛A组c++第7题(正则问题)

2017年蓝桥杯省赛A组c++第7题(正则问题)/*描述:正则问题考虑⼀种简单的正则表达式:只由 x ( ) | 组成的正则表达式。

⼩明想求出这个正则表达式能接受的最长字符串的长度。

例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。

输⼊----⼀个由x()|组成的正则表达式。

输⼊长度不超过100,保证合法。

输出----这个正则表达式能接受的最长字符串的长度。

例如,输⼊:((xx|xxx)x|(x|xx))xx程序应该输出:6*/#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#include<stack>#include<bitset>#include<cstdlib>#include<cmath>#include<set>#include<list>#include<deque>#include<map>#include<queue>using namespace std;const int N=100;char str[N]="((xx|xxx)x|(x|xx))xx";int i=0;int result=0;int f(){int max=0;int temp=0;while(i<strlen(str)){if(str[i]=='('){i++;temp+=f();//还不能确定temp+f()是不是最⼤,故⽽不能写 max+=f();}else if(str[i]==')'){i++;break;//不能在这⾥直接写 return max;因为在返回之前⼀定还要⽐较max和temp的⼤⼩,从⽽返回两者中更⼤者;⽽且还要考虑循环的⼤条件 }else if(str[i]=='|'){i++;if(temp>max) max=temp;//总结这个|字符"之前的"最长x字符串的长度temp=0;}else//字符为x的情况{temp++;i++;}}if(temp>max) max=temp;return max;}int main(){//while(scanf("%s",str)!=0&&str!=NULL){result=f();cout<<result<<endl;}return0;}很难的⼀题,思考了很久,主要还是对于深度优先算法理解不够。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1题:星系炸弹(2015年省赛C/C++B组第2题)在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。

比如:2015-02-19请严格按照格式书写。

不能出现其它文字或符号。

•结果:2017-08-05•解决方法:用Excel拖这个题会了的同学们把上课讲过的,课件上的,其他几道Excel拖动题都做一遍。

第2题:(2015年校内选拔赛C/C++B组第3题)如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?显然,这个值是介于2和3之间的一个数字。

请把x的值计算到小数后6位(四舍五入),并填写这个小数值。

注意:只填写一个小数,不要写任何多余的符号或说明。

#include <iostream>#include <cmath>#include <iomanip>using namespace std;int main(){double x;for(x=2;x<=3;x+=1e-7){if (abs(pow(x,x)-10)<1e-6)cout<<fixed<<setprecision(6)<<x;}return 0;}答案:2.506184其他类似题:ALGO-23一元三次方程求解第3题(全排列)注意:全排列必考!全排列必考!全排列必考!重要的事要说三遍!李白打酒(2014年省赛本科B组第3题)话说大诗人李白,一生好饮。

幸好他从不开车。

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

他边走边唱:无事街上走,提壶去打酒。

逢店加一倍,遇花喝一斗。

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

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。

则:babaabbabbabbbb 就是合理的次序。

像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

答案:14解法1:next_permutation的解法#include<iostream>#include<algorithm>using namespace std;int main(){int p[15]={1,1,1,1,1,2,2,2,2,2,2,2,2,2,2};//1是店,2是花int sum,cnt=0;do{sum=2;for(int i=0;i<15;i++)if(p[i]==1)sum<<=1;else if(p[i]==2)sum--;if(sum==0) cnt++;}while(next_permutation(p,p+14));//因为最后一次遇到的肯定是花,所以只排前14个数,不排最后一个cout<<cnt;return 0;}解法2:交换大法解法#include <iostream>using namespace std;#define N 14//因为最后一次肯定是花,所以只排14个数int cnt;bool ok(int p[],int begin,int end){for (int i = begin; i < end; i++)if (p[i] == p[end])return false;return true;}void perms(int p[],int start){int i;if(start==N-1){int sum=2;for(i=0;i<N;i++)if(p[i]==1)sum<<=1;else if(p[i]==2)sum--;if(sum==1) cnt++;//倒数第2次,剩1斗酒return;}for(i=start;i<N;i++){if (ok(p, start, i)){swap(p[start],p[i]);perms(p,start+1);swap(p[start],p[i]);}}}int main(){int p[]={1,1,1,1,1,2,2,2,2,2,2,2,2,2};//1是店,2是花perms(p,0);cout<<cnt;return 0;}解法3:字符串全排列的解法#include<iostream>#include<algorithm>using namespace std;int main(){string s = "aaaaabbbbbbbbb";//a是店,b是花int sum,cnt=0;do{sum=2;for(int i=0;i<15;i++)if(s[i]=='a')sum<<=1;else if(s[i]=='b')sum--;if(sum==1) cnt++;}while(next_permutation(s.begin(),s.end()));cout<<cnt;return 0;}解法4:递归解法#include<iostream>using namespace std;int cnt=0;void f(int a,int b,int c)//a个店,b朵花,c升酒{if(a>5||b>9) return;f(a+1,b,c*2);f(a,b+1,c-1);if(a==5&&b==9&&c==1)cnt++;}int main(){f(0,0,2);cout<<cnt<<endl;}第4题(逻辑推理题)练习系统ADV-143 扶老奶奶过街•一共有5个红领巾,编号分别为A、B、C、D、E,老奶奶被他们其中一个扶过了马路。

五个红领巾各自说话:A :我和E都没有扶老奶奶B :老奶奶是被C和E其中一个扶过大街的C :老奶奶是被我和D其中一个扶过大街的D :B和C都没有扶老奶奶过街E :我没有扶老奶奶已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街?若有多个答案,在一行中输出,编号之间用空格隔开例如A B C D E(这显然不是正确答案)解法1--位运算#include <iostream>using namespace std;#define N 5int main(){int i,j,t,a[N];for (i = 0x10; i >0; i>>=1){t=i;for (j = N-1; j >= 0; j--){a[j] = t & 1;t>>=1;}//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (j = 0; j < N; j++){if(a[j]) cout<<char('A'+j)<<' ';}}}return 0;}解法2-全排列#include<iostream>#include<algorithm>using namespace std;#define N 5int main(){int a[N]={1,0,0,0,0};//1扶了。

0没扶。

do{//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (int i = 0; i < N; i++){if(a[i]) cout<<char('A'+i)<<' ';}}}while(prev_permutation(a,a+N));return 0;}解法3-递归(大材小用了)#include<iostream>using namespace std;#define N 5int a[N];//1扶了。

0没扶。

void f(int k){int i;if(k==N){int sum=0;for(i=0;i<N;i++)sum+=a[i];if(sum==1)//只有一个人扶了{//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (i = 0; i < N; i++){if(a[i]) cout<<char('A'+i)<<' ';}}}return;}for(i=1;i>=0;i--){a[k]=i;f(k+1);}}int main(){f(0);return 0;}第5题:牌型种数(2015年省赛C/C++B组第7题)•小明被劫持到X赌城,被迫与其他3人玩牌。

相关文档
最新文档