2014年第五届蓝桥杯预赛题目及标准答案
蓝桥杯1431:[蓝桥杯][2014年第五届真题]分糖果Easyonlyonce
![蓝桥杯1431:[蓝桥杯][2014年第五届真题]分糖果Easyonlyonce](https://img.taocdn.com/s3/m/9cebb495b8d528ea81c758f5f61fb7360b4c2be0.png)
网络错误503请刷新页面重试持续报错请尝试更换浏览器或网络环境
蓝桥杯 1431: [蓝桥杯 ][2014年第五届真题 ]分糖果 Easyonlyonce
基本思想:
水题,唯一值得启发的可能也就是传递糖果的过程只需要把最后一个提前保存给第一位小孩即可;
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algorithm> #include<cstring> using namespace std; using std::vector; vector<int>children; vector<int>surge;
bool charge() { for (int i = 1; i < children.size(); i++) { if (children[i] != children[i - 1]) {
2014年第五届蓝桥杯预赛题目C、C++程序设计本科A组

2014年预赛C/C++本科A组考生须知:●考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。
●考试时间为4小时。
时间截止后,提交答案无效。
●在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。
●选手可浏览自己已经提交的答案。
被浏览的答案允许拷贝。
●对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
●选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
●选手必须通过浏览器方式提交自己的答案。
选手在其它位置的作答或其它方式提交的答案无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
结果填空题:要求选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
代码填空题:要求选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码或符号)直接通过网页提交即可,不要书写多余的内容。
使用ANSI C/ANSI C++ 标准,不要依赖操作系统或编译器提供的特殊函数。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库。
注意: main函数结束必须返回0注意: 所有依赖的函数必须明确地在源文件中#include <xxx>,不能通过工程设置而省略常用头文件。
2014蓝桥杯c语言试题及答案

2014蓝桥杯c语言试题及答案2014蓝桥杯是指中国中学生计算机设计大赛,是一个重要的计算机技能竞赛。
C语言作为计算机编程的基础语言,也是该竞赛的主要考核对象。
以下是2014蓝桥杯C语言试题及答案,希望对广大参赛选手有所帮助。
题目一:请编写一个C语言程序,输出1到100之间所有能被3和5同时整除的数。
答案一:```c#include <stdio.h>int main(){int i;for (i = 1; i <= 100; i++){if (i % 3 == 0 && i % 5 == 0){printf("%d ", i);}return 0;}```题目二:请编写一个C语言程序,实现计算一个整数的阶乘。
答案二:```c#include <stdio.h>int factorial(int n){if (n == 0){return 1;}else{return n * factorial(n - 1);}int main(){int num;printf("请输入一个整数:");scanf("%d", &num);int result = factorial(num);printf("%d的阶乘为:%d\n", num, result);return 0;}```题目三:请编写一个C语言程序,统计一个字符串中字母、数字和其他字符的个数。
答案三:```c#include <stdio.h>#include <ctype.h>int main(){char str[100];int i, alphabets = 0, digits = 0, others = 0; printf("请输入一个字符串:");fgets(str, sizeof(str), stdin);for (i = 0; str[i] != '\n'; i++){if (isalpha(str[i])){alphabets++;}else if (isdigit(str[i])){digits++;}else{others++;}}printf("字母个数:%d\n", alphabets);printf("数字个数:%d\n", digits);printf("其他字符个数:%d\n", others);return 0;}```题目四:请编写一个C语言程序,实现冒泡排序算法对一个整型数组进行从小到大排序。
2014第五届蓝桥杯JAVA本科B组试题及答案解析

if(countNum%2 == 0) { //下标为偶数时
arr[index] = false; //该字母退出圈子
leftCount --; //剩余字母数目减一
} countNum++;
}
index ++; //每报一次数 下标加一
int n = sc.nextInt();
int num = (int)Math.pow(2, n) + 1;
System.out.println(num);
//结果:2015
}
}
3.猜字母把abcd...s共19个字母组成的序列重复拼接106次 得到长度为2014的串。接下来删除第1个字母 即开头的字母a以及第3个 第5个等所有奇数位置的字母。得到的新串再进行删除奇数位置字母的动作。如此下去 最后只剩下一字母 请写出该字母。
2014第五届蓝桥杯JAVA本科B组试题及答案
1.武功秘籍小明到X山洞探险 捡到一本有破损的武功秘籍2000多页 当然是伪造的 。他意识到 书的第10页和第11页在同一张纸上 但第11页和第12页不在同一张纸上。
小明只想练习该书的第81页到第92页的武功 又不想带着整本书。请问他至少要撕下多少张纸带走
答案是个整数 考虑对称性 肯定是偶数 。请通过浏览器提交。不要书写多余的内容。
答案public class Main {
public static void main(String []args){
int count = 0;
for (int a = 1;a <= 9; a++){
见图1.png
2014蓝桥杯c试题校赛及答案

2014蓝桥杯c试题校赛及答案2014蓝桥杯C试题校赛及答案1. 题目一:字符串反转给定一个字符串,请编写一个函数,实现字符串的反转。
答案:```cvoid reverseString(char *str) {int len = 0;while (str[len] != '\0') {len++;}for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}```2. 题目二:寻找最大值给定一个整数数组,请找出数组中的最大值。
答案:```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```3. 题目三:计算阶乘编写一个函数,计算并返回一个非负整数的阶乘。
答案:```cunsigned long long factorial(int n) {if (n == 0) {return 1;}unsigned long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```4. 题目四:判断回文数给定一个整数,判断该数是否是回文数。
答案:```cint isPalindrome(int x) {int reversed = 0, original = x;while (x > 0) {int digit = x % 10;reversed = reversed * 10 + digit;x /= 10;}return original == reversed;}```5. 题目五:合并两个有序数组给定两个有序整数数组 nums1 和 nums2,其中 nums1 的长度为 m,nums2 的长度为 n。
2014年第五届蓝桥杯预赛题目JAVA软件开发本科A组

参赛选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
参赛选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。
试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
System.out.println("write to file: " + filename + " " + msg);
}
}
请填写划线部分缺失的代码。通过浏览器提交答案。
注意:不要填写题面已有的内容,也不要填写任何说明、解释文字。
标题:锦标赛
如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少?我们可以从体育锦标赛中受到启发。
如图【1.png】所示,8个选手的锦标赛,先两两捉对比拼,淘汰一半。优胜者再两两比拼...直到决出第一名。
第一名输出后,只要对黄色标示的位置重新比赛即可。
下面的代码实现了这个算法(假设数据中没有相同值)。
代码中需要用一个数组来表示图中的树(注意,这是个满二叉树,不足需要补齐)。它不是存储数据本身,而是存储了数据的下标。
else
b[k] = -1;
return;
}
if(b[k2]<0){
if(b[k1]>=0)
b[k] = b[k1];
else
b[k] = -1;
return;
}
if(__________________________) //填空
b[k] = b[k1];
2014年第五届蓝桥杯预赛题目及标准答案

第六题标题:奇怪的分式上小学的时候,小明经常自己发明新算法。
一次,老师出的题目是:1/4 乘以8/5小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!对于分子、分母都是1~9 中的一位数的情况,还有哪些算式可以这样计算呢?请写出所有不同算式的个数(包括题中举例的)。
显然,交换分子分母后,例如:4/1 乘以5/8 是满足要求的,这算做不同的算式。
但对于分子分母相同的情况,2/2 乘以3/3 这样的类型太多了,不在计数之列!注意:答案是个整数(考虑对称性,肯定是偶数)。
请通过浏览器提交。
不要书写多余的内容。
#include <cstdio>using namespace std;int sum = 0;int main(){for(int a = 1; a <= 9; a++){for(int b = 1; b <= 9; b++){for(int c = 1; c <= 9; c++){for(int d = 1; d <= 9; d++){if(a == b && c == d)continue;int na = a * 10 + c, nb = b * 10 + d;if(a * 1.0 / b * c * 1.0 / d >= na * 1.0 / nb - 0.000001 &&a * 1.0 /b *c * 1.0 /d <= na * 1.0 / nb +0.000001){printf("%d/%d * %d/%d = %d/%d\n", a, b, c, d, na, nb);sum++;}}}}}printf("sum = %d", sum);return 0;}。
第五届蓝桥杯程序设计大赛省赛题目及答案

第五届省赛1.一个串的子串是指该串的一个连续的局部。
如果不要求连续,则可称为它的子序列。
比如对串: "abcdefg" 而言,"ab","abd","bdef" 等都是它的子序列。
特别地,一个串本身,以及空串也是它的子序列。
对两个串而言,可以有许多的共同的子序列,我们关心的是:它们所共同拥有的长度最大的子序列是多长。
以下代码实现了这个问题的求解。
请填写划线部分缺失的代码。
注意:只填写划线部分缺少的内容,不要填写任何多余的符号或注释、说明等。
例如,不要填写已经给出的小括号。
inline max(int a, int b){return a>b?a:b;}int f(char* x, char* y){if(strlen(x)==0) return 0;if(strlen(y)==0) return 0;if(*x == *y) return f(x+1, y+1) + 1;return max( ______________________ );//处理字符串}int main(){printf("%d\n", f("ac","abcd")); //2printf("%d\n", f("acebbcde1133","xya33bc11de")); //5return 0;}f(x+1,y),f(x,y+1)2.历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:pai = 4*(1-1/3+1/5-1/7 ....)参见【图1.png】这个公式简单而优美,但美中不足,它收敛的太慢了。
如果我们四舍五入保留它的两位小数,那么:累积了1项和是:4.00累积了2项和是:2.67累积了3项和是:3.47。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十题
标题:小朋友排队
n 个小朋友站成一排。
现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。
每个小朋友都有一个不高兴的程度。
开始的时候,所有小朋友的不高兴程度都是0。
如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。
当要求某个小朋友第k次交换时,他的不高兴程度增加k。
请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。
如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。
【数据格式】
输入的第一行包含一个整数n,表示小朋友的个数。
第二行包含n 个整数H1 H2 …Hn,分别表示每个小朋友的身高。
输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。
例如,输入:
3
3 2 1
程序应该输出:
9
【样例说明】
首先交换身高为3和2的小朋友,再交换身高为3和1的小朋友,再交换身高为2和1的小朋友,每个小朋友的不高兴程度都是3,总和为9。
【数据规模与约定】
对于10%的数据,1<=n<=10;
对于30%的数据,1<=n<=1000;
对于50%的数据,1<=n<=10000;
对于100%的数据,1<=n<=100000,0<=Hi<=1000000。
资源约定:
峰值内存消耗< 256M
CPU消耗< 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中#include <xxx>,不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
10
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
struct People
{
int top;
int step;
};
struct Cmp
{
bool operator()(const People &m, const People &n)const
{
return m.top < n.top;
}
};
People arr[100005], sortArr[100005];
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d", &arr[i].top);
arr[i].step = 0;
sortArr[i] = arr[i];
}
//memcpy(sortArr, arr, sizeof(People) * n);
sort(sortArr, sortArr + n, Cmp());
for(int i = 0; i < n; i++)
{
int j;
for(j = i; j < n; j++)
if(arr[j].top == sortArr[i].top)
break;
People temp = arr[j];
temp.step += j - i;
for(; j > i; j--)
{
arr[j] = arr[j - 1];
arr[j].step++;
}
arr[i] = temp;
}
int sum = 0;
for(int i = 0; i < n; i++)
sum += (arr[i].step + 1) * arr[i].step / 2;
printf("%d", sum);
return 0;
}。