标题：蓝桥杯
大赛简介
为推动软件开发技术的发展，促进软件专业技术人才培养，向软件行业输送具有创新能力和实践能力的高端人才，提升高校毕业生的就业竞争力，全面推动行业发展及人才培养进程，工业和信息化部人才交流中心特举办“全国软件专业人才设计与创业大赛”，大赛包括三个比赛项目，JAVA软件开发、C/C++程序设计和创业大赛。每个组别设置“本科组”和“高职高专组”。
大赛特色
立足行业，结合实际，实战演练，促进就业。
政府、企业、协会联手构筑的人才培养、选拔平台。
预赛广泛参与，决赛重点选拔。
以赛促学，竞赛内容基于所学专业知识。
分赛区选拨赛优胜奖及以上、全国总决赛优胜奖及以上获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。
总决赛三等奖及以上选手，如果获得本校免试推研资格，将获得北京大学软件与微电子学院的面试资格，并优先录取为该院普通硕士研究生。
组织机构
主办单位：教育部高等学校计算机科学与技术教学指导委员会
工业和信息化部人才交流中心
协办单位：中国软件行业协会
教育部高等学校高职高专计算机类专业教学指导委员会
大赛组委会
主 任： 曲维枝（国务院参事、国家信息化专家咨询委员会主任）
副主任：刘玉珍（工业和信息化部人才交流中心顾问）
陈 冲（中国软件行业协会理事长、教育部高等学校计算机科学与技术教学指导委员会副主任）
马殿富（教育部高等学校计算机科学与技术教学指导委员会秘书长、北京航空航天大学计算机学院院长）
温 涛（教育部高等学校高职高专计算机类教学指导委员会主任、大连东软信息学院院长）
陈 钟（北京大学教授，原北京大学软件与微电子学院院长）
秘书长：李建伟（工业和信息化部人才交流中心人才开发处处长）
副秘书长：吴建宁尹德树李颖
比赛项目
1、组别
竞赛分为：c/c++本科A组，c/c++本科B组，c/c++高职高专组，java本科A组， java本科B组，java高职高专组共6个组别。每位选手只能参加其中一个组别的竞赛。
2、时长
4小时，全程封闭。
3、形式
全程机考。
选手机器通过局域网连接到各个分赛区的竞赛服务器。
选手答题过程中无法访问互联网，也不允许使用本机以外的资源（如USB连接）
以“服务器-浏览器”方式发放试题、回收选手作答。
4、参赛选手机器环境
机器配置：
X86 兼容机器，内存不小于1G，硬盘不小于60G
Windows NT 内核系统（WindowsXP, Windows2000等）
c/c++ 开发环境：
Visual C++ 6.0 (英文，精简版)
支持ANSI C++ 标准
支持 STL
不支持 MFC，ATL类库
帮助文档（英文，chm格式）
Borland C++ 3.1 (精简版)
Java 开发环境
JDK 1.5
Eclipse Helios for JavaSE
JCreator 2.0
API 帮助文档（英文，中文，chm格式）
5、题目形式
竞赛题目完全为客观题型，选手所提交作答的运行结果为主要评分依据。
（1）填空题
题目为若干具有一定难度梯度、分值不等的结果填空题或代码完善填空题。
结果填空题
题目描述一个具有确定解的问题。要求选手对问题的解填空。
不要求解题过程，不限制解题手段，只要求填写确定的结果。
代码填空题
题目描述一个具有确定解的问题。
题目同时给出该问题的某一解法的代码，但其中有缺失部分。
要求选手读懂代码逻辑，对其中的空缺部分补充代码，使整段代码完整。
只填写空缺部分，不要填写完整句子。
（2）编程题
题目为若干具有一定难度梯度、分值不等的编程题目。这些题目的要求明确、答案客观。
题目一般要用到标准输入和输出。
要求选手通过编程，对给定的标准输入求解，并通过标准输出，按题目要求的格式输出解。题目一般会给出示例数据。
一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上，选手不可能通过猜测或其它非编程的手段获得问题的解。
选手给出的解法应具有普遍性，不能只适用于题目的示例数据（当然，至少应该适用于题目的示例数据）。
为了测试选手给出解法的性能，评分时用的测试用例可能包含大数据量的压力测试用例，选手选择算法时要充分考虑可行性的问题。
6、涉及知识
Java高职高专组
解题所涉及的知识：基本语法、面向对象、网络编程、接口、集合、IO、多线程、内部类、异常。（数据结构、swing等图形界面不涉及，不涉及html、JSP、Tomcat、开源框架等web开发方面，不涉及JDBC、SQL等数据库编程方面）
解题允许使用的特性：JDK1.5支持的全部特性
Java本科B组
解题所涉及的知识：Java高职高专组全部知识 + 数据结构（高校《数据结构》教材中出现的经典结构，及其通过组合、变形、改良等方法创造出的变种）
解题允许使用的特性：同java高职高专组
Java本科A组
解题所涉及的知识：Java本科B组全部知识 + 设计模式，反射，XML，多核与并发，测试理论，Swing界面。 
解题允许使用的特性：同java高职高专组
c/c++高职高专组
解题所涉及的知识：结构、数组、指针、标准输入输出、文件操作、递归
（在代码填空中不会出现c++知识，不会出现ANSI C之外的windows API调用） 
解题允许使用的特性：选手可以使用c风格或c++风格或混合风格解答编程大题。 
允许使用ANSI C++特性。允许使用STL类库。 
（不允许使用MFC类库，ATL类库） 
c/c++本科B组 
解题所涉及的知识：c/c++高职高专组全部知识 + 数据结构、函数指针、位运算
解题允许使用的特性：同 c/c++高职高专组
c/c++本科A组 
解题所涉及的知识：c/c++本科B组全部知识 + 函数模板、复杂宏、汇编知识
解题允许使用的特性：同 c/c++高职高专组
7、评分
结果填空题：答案唯一。
程序填空题：按选手填写的代码代入程序中能否得出正确结果为判据。
编程大题：主要以选手所提交的程序的运行结果为依据（大于90%）；同时会参考选手程序的编码风格、逻辑性、可读性等方面（小于10%）。
8、样题
(编程题)下列乘法算式中：每个汉字代表1个数字（1~9）。相同的汉字代表相同的数字，不同的汉字代表不同的数字。
赛软件 * 比赛 = 软件比拼
试编程确定使得整个算式成立的数字组合，如有多种情况，请给出所有可能的答案。
【参考结果】
465 * 14 = 6510
（编程题）花朵数
一个N位的十进制正整数，如果它的每个位上的数字的N次方的和等于这个数本身，则称其为花朵数。
例如：
当N=3时，153就满足条件，因为 1^3 + 5^3 + 3^3 = 153，这样的数字也被称为水仙花数（其中，“^”表示乘方，5^3表示5的3次方，也就是立方）。
当N=4时，1634满足条件，因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。
当N=5时，92727满足条件。
实际上，对N的每个取值，可能有多个数字满足条件。
程序的任务是：求N=21时，所有满足条件的花朵数。注意：这个整数有21位，它的各个位数字的21次方之和正好等于这个数本身。
如果满足条件的数字不只有一个，请从小到大输出所有符合条件的数字，每个数字占一行。因为这个数字很大，请注意解法时间上的可行性。要求程序在3分钟内运行完毕。
【程序运行参考结果】
12846 864304 373139 1252
44917 739914 603869 7307
（编程题）信用卡号验证
当你输入信用卡号码的时候，有没有担心输错了而造成损失呢？其实可以不必这么担心，因为并不是一个随便的信用卡号码都是合法的，它必须通过Luhn算法来验证通过。
该校验的过程：
1、从卡号最后一位数字开始，逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始，逆向将偶数位数字，先乘以2（如果乘积为两位数，则将其减去9），再求和。
3、将奇数位总和加上偶数位总和，结果应该可以被10整除。
例如，卡号是：5432 1234 5678 8881
则奇数、偶数位（用红色标出）分布：5432 1234 5678 8881
奇数位和=35
偶数位乘以2（有些要减去9）的结果：1 6 2 6 1 5 7 7，求和=35。
最后35+35=70 可以被10整除，认定校验通过。
请编写一个程序，从标准输入获得卡号，然后判断是否校验通过。通过显示：“成功”，否则显示“失败”。
比如，用户输入：3568 2702 7232 780
程序输出：成功
【程序测试参考用例】
3564 0601 0024 817 成功
3589 7301 7867 744 成功
3568 2702 7232 781 失败
3064 0601 0024 817 失败
3589 7301 7867 754 失败
（c/c++组代码填空）下列代码把一个串p复制到新的位置q。请填写缺少的语句；
char* p = "abcde";
char* q = (char*)malloc(strlen(p)+1);
for(int i=0;_____________; i++) q[i] = p[i];
q[i] = 0;
【参考答案】
P[i] 或 *(p+i) 或 p[i] != '\0' 或 ...
（答案不唯一，以选手提供代码带入专用验证程序测试为依据，验证程序比题面中提供的程序片段更严谨，更完善）
（Java组代码填空）有n个孩子站成一圈，从第一个孩子开始顺时针方向报数，报到3的人出列，下一个人继续从1报数，直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例，模拟了这个过程，请完善之（提示：报数的过程被与之逻辑等价的更容易操作的过程所代替）。
Vector a = new Vector();
for(int i=1; i<=10; i++)
{
a.add("第" + i + "个孩子");
}
for(;;)
{
if(a.size()==1) break;
for(int k=0; k<2; k++)
________________;
a.remove(0);
}
System.out.println(a);
【参考答案】
a.add(a.remove(0))
（答案不唯一，以选手提供代码带入专用验证程序测试为依据，验证程序比题面中提供的程序片段更严谨，更完善
(结果填空题) 有趣的平方数
625这个数字很特别，625的平方等于390625，刚好其末3位是625本身。除了625，还有其它的3位数有这个特征吗？还有一个！该数是：_____________
【参考答案】
376
9，注意事项
（1）选手必须符合参赛资格，不得弄虚作假。资格审查中一旦发现问题，则取消其报名资格；竞赛过程中发现问题，则取消竞赛资格；竞赛后发现问题，则取消竞赛成绩，收回获奖证书及奖品等，并在大赛官网上公示。 
（2）参赛选手应遵守竞赛规则，遵守赛场纪律，服从大赛组委会的指挥和安排，爱护竞赛赛场地的设备。 [1]