1、七、奖项设置及评选办法 7.1 省赛1.参赛选手奖 省赛每个组别设置一、二、三等奖,比例分别为 10%、20%、30%,总比例为实际参赛人数的 60%,零分卷不得奖。省赛一等奖选手获得直接进入全国总决赛资格。 所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。 2.指导教师奖 省赛中获奖的参赛选手的指导教师将获得“蓝桥杯全国软件和信息技术专业人才大赛(赛区) 优秀指导教师” 称号。 3.参赛学校奖 参赛组织工作表现突出、 经审批符合相关条件的单位,将获得“ 蓝桥杯全国软件和信息技术专业人才大赛(赛区)优秀组织单位”称号; 参赛选手成绩优异,经审 批符合相关条件的学
2、校将获 得“蓝桥杯全国软件和信息技术专业人才大赛(赛区)优胜学校”称号。 7.2 总决赛全国总决赛按参赛项目和成绩,为获奖学生、教 师和组织单 位颁发相应证书和奖励。其中: 1.参赛选手奖个人赛根据相应组别分别设立特、一、二、三等奖及优秀奖。在决赛奖项设置中,每个 组别设置特等奖 1 名,一等奖不高于 5%,二等奖占 20%,三等奖不低于 25%,优秀奖不超过50%, 零分卷不得奖。所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。 大学组总决赛三等奖及以上选手,如果 获得本校免试 推研资格,将 获得北京大学软件与微电子学院等院校的面试资格,并 优先录取为该院普通
3、 硕士研究生。 大学组总决赛三等奖及以上选手,可免除笔 试,直接获得百度、IBM 等企业在员工招聘及实习生招聘中的面试机会。2.指导教师奖所有获奖选手的指导教师,均可 获得“ 蓝桥杯全国软件和信息技术专业人才大赛优秀指导教师”证书。3.参赛学校奖参赛组织工作成绩突出、 经审批符合相关条件的单位,获“ 蓝桥杯全国软件和信息技术专业人才大赛优秀组织单位”称号;参赛选手成绩优异、经审 批符合相关条件的学校, 获“蓝桥杯全国软件和信息技术专业人才大赛优胜学校”称号。7.2 总决赛全国总决赛按参赛项目和成绩,为获奖学生、教 师和组织单 位颁发相应证书和奖励。其中: 1.参赛选手奖个人赛根据相应组别分别设
4、立特、一、二、三等奖及优秀奖。在决赛奖项设置中,每个 组别设置特等奖 1 名,一等奖不高于 5%,二等奖占 20%,三等奖不低于 25%,优秀奖不超过50%, 零分卷不得奖。所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。 大学组总决赛三等奖及以上选手,如果 获得本校免试 推研资格,将 获得北京大学软件与微电子学院等院校的面试资格,并 优先录取为该院普通 硕士研究生。 大学组总决赛三等奖及以上选手,可免除笔 试,直接获得百度、IBM 等企业在员工招聘及实习生招聘中的面试机会。选手及指导老师(或家长)在省赛、决 赛期间发生的住宿、用餐、交通等费用自理;1. 组别竞
5、赛分为:C/C+大学 A 组, C/C+大学 B 组, C/C+大学 C 组,Java 大学 A 组,Java 大学 B 组, Java 大学 C 组共 6 个组别。每位 选手只能申请参加其中一个组别的竞赛。各个组别单独评奖。一本院校(985、211)本科生只能 报大学 A 组。所有院校研究生只能报大学 A 组。其它本科院校本科生可自行选择大学 A 组或大学 B 组。其它高职、高专院校可自行 选择报任意组别。2. 竞赛时间初赛(省赛)时长:4 小时,6 个组别同时进行。决赛时长:4 小时。分上下午两个 场次(每位选手只参加其中一个 场次)。详细赛程安排另行通知。3. 竞赛形式个人赛,一人一机,
6、全程机考。选手机器通过局域网连接到各个考场的竞赛服务器。选手答题过程中无法访问互联网,也不允许使用本机以外的资源(如 USB 连接)。以“服务器- 浏览器”方式发放试题、回收 选手答案。4. 参赛选手机器环境选手机器配置:X86 兼容机器,内存不小于 1G,硬盘不小于 60G操作系统:WindowsXP 或 Windows7c/c+ 语言开发环境:l Dev-cpp 5.4.0 支持 ANSI C,ANSIC+,STLl c/c+ API 帮助文档(中文,chm 格式)Java 语 言开发环境:l JDK 1.6l Eclipse Helios for JavaSEl API 帮助文档(中文,
7、chm 格式)5. 试题形式竞赛题目完全为客观题型。根据选手所提交答案的测评结果为评分依据。5.1. 结果填空题l 题目描述一个具有确定解的 问题。要求 选手对问题的解填空。l 不要求解题过程,不限制解题手段(可以使用任何开发语言或工具,甚至是手工计算),只要求填写最终的结果。5.2. 代码填空题l 题目描述一个具有确定解的 问题。l 题目同时给出该问题的某一解法的代 码,但其中有缺失部分。要求选手读懂代码逻辑,对其中的空缺部分补充代码 ,使整段代 码完整。只填写空缺部分,不要填写完整句子。不要写注释、说明或其它 题目中未要求的内容。5.3. 编程大题题目为若干具有一定难度梯度、分 值不等的编
8、程题目。这些题目的要求明确、答案客 观。题目一般要用到标准输入和输出。要求 选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式 输出解。 题目一般会给出示例数据。一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上, 选手不可能通过猜测或其它非编程的手段获得问题的解。选手给出的解法应具有普遍性,不能只适用于 题目的示例数据(当然,至少应该适用于题目的示例数据)。为了测试选手给出解法的性能, 评分时用的测试用例可能包含大数据量的 压力测试用例,选手选择算法时要尽可能考虑可行性的问题。6. 试题涉及的基础知识l Java 大学 C 组解题所涉及的知识:基本语法、面向 对象、
9、网 络编程、接口、集合、IO 、多线程、内部 类、异常与保护,基本数据结构。 (不涉及 swing 等图形界面,不涉及 html、JSP、Tomcat、开源框架等 web 开发方面,不涉及 JDBC、SQL 等数据库编程方面)解题允许使用的特性:JDK1.6 支持的特性l Java 大学 B 组解题所涉及的知识:Java 大学 C 组全部知识 + 数据结构(高校数据结构教材中出现的经典结构,及其通过组合、变形、改良等方法创造出的变种)+ 大学程度的基本数学知识(含:解析几何、线性代数、微积分、概率、复平面基本性 质)解题允许使用的特性:同 java 大学 C 组l Java 大学 A 组解题所
10、涉及的知识:Java 大学 B 组全部知识 + 设计模式,反射,XML ,多核与并 发,软件测试。解题允许使用的特性:同 Java 大学 C 组l C/C+大学 C 组解题所涉及的知识:结构、数 组、指 针、标准输入输出、文件操作、递归、基本数据结构(在代码填空中不会出现 C+知识,不会出现 ANSI C/C+ 之外的 windows API 调用)解题允许使用的特性:选手可以使用 c 风格或 c+风格或混合风格解答编程大题。允许使用 ANSI C(99) / ANSI C+(98) 特性。允 许使用 STL 类库。l C/C+大学 B 组 解题所涉及的知识:C/C+大学 C 组全部知识 +
11、数据 结构(高校数据结构教材中出现的经典结构,及其通过组合、变形、改良等方法创造出的变种)、函数指针、位运算 + 大学程度的基本数学知识(含:解析几何、 线性代数、微 积分、概率、复平面基本性质)解题允许使用的特性:同 C/C+大学 C 组l C/C+大学 A 组 解题所涉及的知识:C/C+大学 B 组全部知识 + 函数模板、宏替换、汇编知识解题允许使用的特性:同 C/C+大学 C 组7. 涉及的领域知识除了编程语言的基础知识,大 赛很少用到特定领域的知 识。比如: 电信、医药、地质、银行等特定领域。如果偶尔用到,会详细解释概念,并给出足够的示例。但“数学领域” 是个例外。大赛假定选手具有足够
12、的中学数学知识。具体包括:l 算数:素数,整出,余数,求模,不定方程 l 代数:函数,方程,多项式, l 解析几何:笛卡尔坐标系,点到直线的举例,极坐标,l 复数:模,夹角,矢量的合成和分解8. 评分全程机器阅卷。必要环节 有少量人工介入。l 结果填空题:答案唯一。只有 0 分或满分(格式错误为 0 分)。l 程序填空题:按选手填写的代码代入程序中能否得出正确结果为判据。测试数据与题面中的数据可能不同。只有 0 分或满分(格式错误为 0 分)c/c+组选错了编译器类型可能得 0 分。l 编程大题:主要以选手所提交的程序的运行结果为依据(大于 95%);同时会参考选手程序的编码风格、逻辑性、可读
13、性等方面(小于 5%)。多个测试用例单独计分。通 过则该用例得分。c/c+选手选错了编译器类型可能得 0 分c/c+选手主程序没有 return 0 可能得 0 分。java 选手使用了 package 语句按 0 分处理。java 选手主类名字不是 Main 按 0 分处理。其它题目中明确告知的规则如不遵守,都可能 导致 0 分。9. 样题【编程大题】花朵数一个 N 位的十进制正整数,如果它的每个位上的数字的 N 次方的和等于这个数本身,则称其为花朵数。例如:当 N=3 时,153 就满 足条件,因 为 13 + 53 + 33 = 153,这样的数字也被称为水仙花数(其中, “”表示乘方,
14、53 表示 5 的 3 次方,也就是立方)。当 N=4 时, 1634 满足条件,因为 14 + 64 + 34 + 44 = 1634。当 N=5 时, 92727 满足条件。实际上,对 N 的每个取值,可能有多个数字 满足条件。程序的任务是:求 N=21 时,所有 满足条件的花朵数。注意:这个整数有 21 位,它的各个位数字的 21 次方之和正好等于这个数本身。如果满足条件的数字不只有一个, 请从小到大输出所有符合条件的数字,每个数字占一行。因为这个数字很大,请注意解法时间上的可行性。要求程序在 1 分钟内运行完毕。【程序运行参考结果】128468643043731391252449177
15、399146038697307【编程大题】信用卡号验证当你输入信用卡号码的时候,有没有担心 输错了而造成 损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必 须通 过 Luhn 算法来验证通过。该校验的过程:1、从卡号最后一位数字开始,逆向将奇数位(1、 3、5 等等)相加。2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以 2(如果乘积为两位数,则将其减去 9),再求和。3、将奇数位总和加上偶数位 总和, 结果应该可以被 10 整除。例如,卡号是:5432123456788881则奇数、偶数位(用红色标 出)分布:5432123456788881奇数位和=35偶数
16、位乘以 2(有些要减去 9)的结果:1 6 2 6 1 5 7 7,求和=35。最后 35+35=70 可以被 10 整除, 认定校验通过。请编写一个程序,从标准 输入获得卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。比如,用户输入:356827027232780程序输出:成功【程序测试参考用例】356406010024817 成功358973017867744 成功356827027232781 失败306406010024817 失败358973017867754 失败【c/c+组代码填空】下列代码把一个串 p 复制到新的位置 q。请填写缺少的 语句;char* p =
17、 “abcde“;char* q = (char*)malloc(strlen(p)+1);for(int i=0;_; i+) qi = pi;qi = 0;【参考答案】pi 或 *(p+i) 或 pi != 或 .(答案不唯一,以选手提供代 码带入专用验证程序测试为 依据, 验证程序比题面中提供的程序片段更严谨,更完善)【Java 组 代码填空】有 n 个孩子站成一圈,从第一个 孩子开始顺时针方向 报数, 报到 3 的人出列,下一个人继续从 1 报数,直到最后剩下一个孩子 为止。 问剩下第几个孩子。下面的程序以 10 个孩子为例,模拟了这个 过程,请完善之(提示:报数的过程被与之 逻辑等价
18、的更容易操作的过程所代替)。Vector a = new Vector();for(int i=1; i=10; i+)a.add(“第“ + i + “个孩子“);for(;)if(a.size()=1) break;for(int k=0; k2; k+)_;a.remove(0);System.out.println(a);【参考答案】a.add(a.remove(0)(答案不唯一,以选手提供代 码带入专用验证程序测试为 依据, 验证程序比题面中提供的程序片段更严谨,更完善)【结果填空题】 有趣的平方数625 这个数字很特别,625 的平方等于 390625,刚好其末 3 位是 625
19、本身。除了 625,还有其它的 3 位数有这个特征吗?还有一个!该数是:_【参考答案】37610. 高职高专特色为了照顾到高职高专的教学特点,本届大 赛为高职高 专设计的部分题目(并非全部题目),题面上给出了算法的详细描述,要求 选手分析代码,填写缺少的语句。对于部分编程大题也给出某种解法的提示。当然,选手完全可以另辟蹊径,用自己的方法解决问题。仍然是以代码的最 终执行效果为评分依据。题目示例:代码填空下面的代码定义了一个方法 hasSameChar,用于判定一个给定的串中是否含有重复的字符,比如“about”中,就没有重复的字符,而 “telecom”,“aabaa”中都含有重复的字符,其中
20、 “e”重复了 2 次,而“a”重复了 4 次,这些都算作有重复。请根据方法的说明,分析 给出的源程序,并填写划 线部分缺失的代 码。注意,只填写缺少的,不要重复周围已经给出的内容,也不要填写任何说明性文字等。public class A/*判断串 s 中是否含有重复出现的字符如果有重复则返回 true其它情况返回 false判断的思路是:从左到右扫描每个字符对当前的字符,从右向左在 s 串中搜索它的出现位置,可以用 lastIndexOf 方法如果找到的位置与当前的位置不同,则必然存在该字符的重复 现象,即可返回 true其它情况返回 false在特殊情况下,比如传入的是空指 针,或者 s
21、为空串,或者只含有 1 个字符,都不可能含有重复字符,因此,这些情况直接返回 false*/public static boolean hasSameChar(String s)if(s=null | s.length()2) return false;for(int i=0; is.length(); i+)char c = s.charAt(i);int k = s.lastIndexOf(c);if(_) return true;return false;public static void main(String args)System.out.println(hasSameChar(
22、“a“); /falseSystem.out.println(hasSameChar(“abcdefg“); /falseSystem.out.println(hasSameChar(“abacdefag“); /trueSystem.out.println(hasSameChar(“abcdebfg“); /true编程大题示例:【5 个砝码】用天平称重时,我们希望用尽可能少的砝 码组合称出尽可能多的重量。如果只有 5 个砝码,重量分 别是 1,3,9,27,81。则它们可以组合称出 1 到 121 之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量, 给出砝
23、码组 合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数在后。可以假设用户的输入的数字符合范围 1121。【解题思路提示】我们把已知的砝码序列记为:x1, x2, x3, x4, x5, x6 (这里多加一个标准砝码,为解题叙述方便)对于任意给定的重量 x,如果 刚好等于 xi 则问题解决。否则一定会位于两个标准砝码重量的中间,不妨 设为 :xi x xj令 a = x xi, b = xj x则,x 要么可以表示为: xi + a, 要么可以表示为: xj b这样问题就归结为怎样表示出 a 或 b另一思路:对于每个 xi,可以
24、乘以一个系数 ki,再求和。ki 的数值无外乎:-1 0 1这样,因为标准砝码的数量的很少的,我们就可以多层 循环暴力组合 ki 来求解。还有更“土气” 但有效的思路:既然输入范围只有 120 左右,如果对每一种情况都做人工求解,只要列一个大表,等查询的时候,直接输出答案就好了啊!但这似乎是个耗时的工程11. 其它注意事项(1)选手必须符合参赛资格,不得弄虚作假。资格审查中一旦发现问题,则取消其报名资格;竞赛过程中发现问题,则取消 竞赛资格;竞赛后发现问题 ,则取消竞赛成绩,收回获奖证书及奖品等,并在大赛官网上公示。 (2)参赛选手应遵守竞赛规则,遵守 赛场纪律,服从大 赛组 委会的指挥和安排,爱护竞赛赛场地的设备。(3)竞赛采用机器阅卷+少量人工辅助。 选手需要特别注意提交答案的形式。必须仔细阅读题目的输入、输出要求以及示例,不要随意添加不需要的内容。(4)使用 java 语言时,注意主类名必须是:Main,不能使用 package 语句。使用 c/c+语言时,注意主函数需要 return 0;(5)c 组与 c+组选手提交答案时,一定要注意选择 c 或 c+(即编译器类型)。因为使用机器阅卷,很可能会因为选手 选择了错误的编译器,而使自己代码无法编译通过。