蓝桥杯2016年JavaB组省赛题
蓝桥杯java历年真题及答案整理(共129道题目及答案)

1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}方法二:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.List;import java.util.Scanner;import java.util.Set;public class Demo03 {// 去掉重复元素,放入lispublic static void removeDuplicate(String s,Set<Character> lis){for(char x:s.toCharArray()){lis.add(x);}}// 为方便操作将sets 转lispublic static void convert(List<Character> lis,Set<Character> sets){Iterator<Character> iter = sets.iterator();while(iter.hasNext()){lis.add(iter.next());}}// 检测符合条件的元素组合public static void check(Set<Character> sets){List<Character> lis = new ArrayList<Character>();convert(lis,sets); // 为方便操作将sets 转lisStringBuffer sb = new StringBuffer();for(int i=0;i<lis.size()-2;i++){for(int j=i+1;j+1<lis.size();j++){ // 向后添加两位,所以j+1<lis.size() for(int k=j+1;k<lis.size();k++){sb.append(lis.get(i));sb.append(lis.get(j));sb.append(lis.get(k));System.out.println(sb); // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入串(不大于30个字符)。
第七届蓝桥杯Java B组省赛答案

package com.diqijie.shengsai;/*** @author leibaobao* 煤球数目* 解:100层为1+2+3....+100 = 5050*/publicclass _1 {publicstaticvoid main(String[] args) { // TODO Auto-generated method stubint sum = 0;for(int i = 1; i <= 100; i++){for(int j = 1; j <= i; j++)sum += j;}System.out.println(sum);}}package com.diqijie.shengsai;/*** @author leibaobao* 生日蜡烛* 解:人最大也不过100岁,不要想太多。
暴力一点 */publicclass _2 {publicstaticvoid main(String[] args) { // TODO Auto-generated method stubint sum = 0;for(int i = 0; i < 100; i++){for(int j = i; j < 100; j++){sum += j;if(sum == 236)System.out.println(i);}sum = 0;}} }package com.diqijie.shengsai;import java.util.HashSet;/*** @author leibaobao* 凑算式* 解:前几题不要多想,暴力一点。
但是Java能不用大数不要去用大数* 麻烦,慢。
这题通分加for循环不就OK了吗*/publicclass _3 {publicstaticvoid main(String[] args) {// TODO Auto-generated method stubint count = 0;for(int a = 1; a < 10; a++)for(int b = 1; b < 10; b++)for(int c = 1; c < 10; c++)for(int d = 1; d < 10; d++)for(int e = 1; e < 10; e++)for(int f = 1; f < 10; f++)for(int g = 1; g < 10; g++)for(int h = 1; h < 10; h++)for(int i = 1; i < 10; i++){if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&&d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&e!=f&&e!=g&&e!=h&&e!=i&&f!=g&&f!=h&&f!=i&&g!=h&&g!=i&&i!=h){int temp_1 = b*(g*100 +h*10 +i);int temp_2 = c*(d*100+e*10+f);int temp_3 = c*(g*100 +h*10 +i);if((temp_1+temp_2)%temp_3 == 0)if(a + (temp_1+temp_2)/temp_3 == 10){count++;}}}System.out.println(count);}}package com.diqijie.shengsai;/*** @author leibaobao 分小组解:这个读懂即可*/publicclass _4 {publicstatic String remain(int[] a) {String s = "";for (int i = 0; i < a.length; i++) {if (a[i] == 0)s += (char) (i + 'A');}return s;}publicstaticvoid f(String s, int[] a) {for (int i = 0; i < a.length; i++) {if (a[i] == 1)continue;a[i] = 1;for (int j = i + 1; j < a.length; j++) {if (a[j] == 1)continue;a[j] = 1;for (int k = j + 1; k < a.length; k++) {if (a[k] == 1)continue;a[k] = 1;System.out.println(s+""+(char) (i + 'A')+ (char) (j + 'A') + (char) (k + 'A') +""+ remain(a)); // 填空位置a[k] = 0;}a[j] = 0;}a[i] = 0;}}publicstaticvoid main(String[] args) {int[] a = newint[9];a[0] = 1;for (int b = 1; b < a.length; b++) {a[b] = 1;for (int c = b + 1; c < a.length; c++) {a[c] = 1;String s = "A" + (char) (b + 'A') + (char) (c + 'A');f(s, a);a[c] = 0;}a[b] = 0;}}}/*** @author leibaobao 抽签* 解:填代码题读懂即可,dfs*/publicclass _5 {publicstaticvoid f(int[] a, int k, int n, String s) { if (k == a.length) {if (n == 0)System.out.println(s);return;}String s2 = s;for (int i = 0; i <= a[k]; i++) {f(a,k+1,5-s2.length(),s2);s2 += (char) (k + 'A');}}publicstaticvoid main(String[] args) {int[] a = { 4, 2, 2, 1, 1, 3 };f(a, 0, 5, "");}}/*** @author leibaobao 抽签* 解:填代码题读懂即可,dfs*/publicclass _5 {publicstaticvoid f(int[] a, int k, int n, String s) { if (k == a.length) {if (n == 0)System.out.println(s);return;}String s2 = s;for (int i = 0; i <= a[k]; i++) {f(a,k+1,5-s2.length(),s2);s2 += (char) (k + 'A');}}publicstaticvoid main(String[] args) {int[] a = { 4, 2, 2, 1, 1, 3 };f(a, 0, 5, "");}}package com.diqijie.shengsai;import java.util.Arrays;import java.util.HashSet;import java.util.Iterator;/*** @author leibaobao 剪邮票* 解:深搜,效率不是很高,反正是填空题*/public class _7 {public static int count = 0;public static int [] a = new int[5];public static HashSet<String> hashset = new HashSet<String>();public static void main(String[] args) {// TODO Auto-generated method stubfor(a[0] = 0; a[0] < 12; a[0]++)for(a[1] = a[0]+1; a[1] < 12; a[1]++)for(a[2] = a[1]+1; a[2] < 12; a[2]++)for(a[3] = a[2]+1; a[3] < 12; a[3]++)for(a[4] = a[3]+1; a[4] < 12; a[4]++)if(jus()){hashset.add(""+a[0]+a[1]+a[2]+a[3]+a[4]);}System.out.println(hashset.size());}private static boolean jus() {// TODO Auto-generated method stubboolean flag[] = new boolean[5];dfs(flag,0);return flag[0]&&flag[1]&&flag[2]&&flag[3]&&flag[4];}private static void dfs(boolean[] flag,int n) {// TODO Auto-generated method stubflag[n] = true;for(int i = 0; i < 5; i++){//加一减一要在同一行、加四减四要在同一列if(!flag[i] && (a[i]/4 == a[n]/4) && (a[i] == a[n] - 1 || a[i] == a[n] + 1)){dfs(flag,i);}if (!flag[i] && (a[i]%4 == a[n]%4) && (a[i] == a[n] - 4 || a[i] == a[n] + 4)){dfs(flag,i);}}}}package com.diqijie.shengsai;import java.util.Scanner;/*** @author leibaobao* 四平方和* 解:哎,这题我超级无语。
自-蓝桥杯2016年JavaB组省赛题

2016年JavaB组省赛题1.煤球数目(结果填空)有一堆煤球,堆成三角棱锥形。
具体:第一层放1个,第二层3个(排列成三角形),ﻫ第三层6个(排列成三角形),ﻫ第四层10个(排列成三角形),ﻫ....ﻫ如果一共有100层,共有多少个煤球?ﻫﻫ请填表示煤球总数目的数字。
ﻫ注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
2.生日蜡烛 (结果填空)某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
ﻫ现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?ﻫ请填写他开始过生日party的年龄数。
ﻫ注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
3.凑算式(结果填空)B DEFﻫA+--- + -------=10C GHIﻫ(如果显示有问题,可以参见【图1.jpg】)这个算式中A~I代表0~9的数字,不同的字母代表不同的数字。
比如:8/3+6ﻫ+952/714 就是一种解法,3/1+5ﻫ+972/486是另一种解法。
这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
5.抽签 (代码填空)X星球要派出一个5人组成的观察团前往W星。
其中:A国最多可以派出4人。
B国最多可以派出2人。
ﻫC国最多可以派出2人。
ﻫ....ﻫ那么最终派往W星的观察团会有多少种国别的不同组合呢?ﻫﻫ下面的程序解决了这个问题。
ﻫ数组a[]中既是每个国家可以派出的最多的名额。
ﻫ程序执行结果为:ﻫDEFFFCEFFFﻫCDFFFﻫCDEFFCCFFFCCEFFﻫCCDFFﻫCCDEFBEFFFﻫBDFFFﻫBDEFFBCFFFﻫBCEFFﻫBCDFFﻫBCDEF....(以下省略,总共101行)[java]1.publicclass Main2.{3.public staticvoidf(int[] a, int k, int n, String s)4. {5.if(k==a.length){6.if(n==0) System.out.println(s);7.return;8.}9.10. String s2 = s;11.for(int i=0; i<=a[k]; i++){12.13._____________________________; //填空位置14.s2 += (char)(k+'A');15. }16. }17.18.public staticvoidmain(String[] args)19. {20.int[] a = {4,2,2,1,1,3};21.22. f(a,0,5,"");23.}24.}6.方格填数 (结果填空)如下的10个格子+--+--+--+| |||ﻫ+--+--+--+--+| | | | |ﻫ+--+--+--+--+ﻫ| || |ﻫ+--+--+--+ﻫﻫ(如果显示有问题,也可以参看【图1.jpg】)ﻫ填入0~9的数字。
大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。
答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。
java蓝桥杯b组题目

java蓝桥杯b组题目(实用版)目录1.Java 蓝桥杯 B 组题目概述2.Java 蓝桥杯 B 组题目的考试形式和要求3.Java 蓝桥杯 B 组题目的备考策略4.总结正文【Java 蓝桥杯 B 组题目概述】Java 蓝桥杯是我国高校计算机类专业的一项重要赛事,旨在发现和培养优秀的计算机人才。
其中,B 组题目是针对本科生举办的比赛,其内容涵盖了 Java 语言的基本语法、数据结构与算法、操作系统等方面的知识。
参加 Java 蓝桥杯 B 组比赛不仅能够提升自己的编程技能,还可以与其他优秀的计算机专业学生进行交流,拓宽视野。
【Java 蓝桥杯 B 组题目的考试形式和要求】Java 蓝桥杯 B 组题目的考试形式为在线编程,参赛选手需要在规定的时间内(通常为 4 小时)完成若干道题目。
这些题目通常包括程序设计题、算法题、调试题等,要求参赛选手具备扎实的 Java 编程基础和较强的逻辑思维能力。
【Java 蓝桥杯 B 组题目的备考策略】1.扎实掌握 Java 基础知识。
包括 Java 基本语法、面向对象编程、异常处理、集合框架等,这些知识点是解决 Java 蓝桥杯 B 组题目的基础。
2.学习数据结构与算法。
数据结构与算法是计算机专业的核心知识,对于解决编程题目具有重要意义。
可以学习常见的数据结构(如数组、链表、树、图等)和算法(如排序、查找、动态规划等),并熟练掌握常用的算法思想和方法。
3.多做练习,积累经验。
参加在线编程练习平台,如 LeetCode、牛客网等,可以提高自己的编程能力和应对题目的技巧。
同时,多参加模拟赛,了解自己在考试环境下的应对能力,为正式比赛做好充分的准备。
4.分析总结,查漏补缺。
在练习过程中,要注重总结自己遇到的问题和不足,查找资料和学习他人的解题方法,不断提高自己的编程水平。
【总结】Java 蓝桥杯 B 组题目对于计算机专业的学生来说是一个很好的锻炼和学习机会。
要想在比赛中取得好成绩,需要扎实掌握 Java 基础知识,学习数据结构与算法,多进行练习和总结。
2016蓝桥杯试卷答案【可编辑】

1. 代码填空(满分3分)神秘的三位数有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。
即:abc = a! + b! + c!下面的程序用于搜索这样的3位数。
请补全缺失的代码。
int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};int i;for(i=100; i<1000; i++){int sum = 0;int x = i;while(____){sum += JC[x%10];x /= 10;}if(i==sum) printf("%d\n", i);}//预赛NO.1题#include <stdio.h>void main(){int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};int i;int sum;int x;for (i=100; i<1000; i++){sum = 0;x = i;while (x){sum += JC[x%10];x /= 10;}if (i == sum){printf("%d\n",i);}}}复制代码2. 代码填空(满分4分)歌赛新规则歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。
当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?有人提出:应该去掉与其余的分数平均值相差最远的那个分数。
即“最离群”的分数。
以下的程序用于实现这个功能。
其中x存放所有评分,n表示数组中元素的个数。
函数返回最“离群”的那个分数值。
请补全缺失的代码。
double score(double x[], int n){int i,j;double dif = -1;double bad;for(i=0; i<n; i++){double sum = 0;for(j=0; j<n; j++){if(________) sum += x[j];}double t = x[i] - sum / (n-1);if(t<0) t = -t;if(t>dif){dif = t;bad = x[i];printf("%d, %f\n", i, x[i]);}}return bad;}//预赛NO.2题#include <stdio.h>void main(){double x[10] = {7,8,8,8,8,20,8,8,8,8};int i,j;double dif = -1;double bad;double sum;int n=10;double t;for (i=0;i<10;i++){sum = 0;for (j=0; j<n ; j++){if (j!=i) sum+=x[j];}t = x[i]-sum/(n-1);if (t<0) t = -t;if (t>dif){dif = t;bad = x[i];printf("%d,%f\n",i,x[i]);}}printf("bad = %lf\n",bad);}复制代码3. 代码填空(满分4分)反转串我们把“cba”称为“abc”的反转串。
蓝桥杯java历年真题及答案整理(共129道题目及答案)

1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}方法二:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.List;import java.util.Scanner;import java.util.Set;public class Demo03 {// 去掉重复元素,放入lispublic static void removeDuplicate(String s,Set<Character> lis){for(char x:s.toCharArray()){lis.add(x);}}// 为方便操作将sets 转lispublic static void convert(List<Character> lis,Set<Character> sets){Iterator<Character> iter = sets.iterator();while(iter.hasNext()){lis.add(iter.next());}}// 检测符合条件的元素组合public static void check(Set<Character> sets){List<Character> lis = new ArrayList<Character>();convert(lis,sets); // 为方便操作将sets 转lisStringBuffer sb = new StringBuffer();for(int i=0;i<lis.size()-2;i++){for(int j=i+1;j+1<lis.size();j++){ // 向后添加两位,所以j+1<lis.size() for(int k=j+1;k<lis.size();k++){sb.append(lis.get(i));sb.append(lis.get(j));sb.append(lis.get(k));System.out.println(sb); // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入串(不大于30个字符)。
蓝桥杯javab组模拟题

蓝桥杯javab组模拟题一、介绍1.1 蓝桥杯蓝桥杯是中国著名的计算机竞赛之一,分为初赛和决赛两个阶段,每年吸引了成千上万的中学生和大学生参与。
其中,javab组是蓝桥杯的一个比赛项目,要求参赛者使用Java语言来完成编程任务。
1.2 模拟题为了帮助参赛者更好地准备蓝桥杯javab组的比赛,官方通常会提供一些模拟题供参赛者练习和熟悉比赛的题型和要求。
本文将围绕蓝桥杯javab组模拟题展开讨论,探讨如何有效地完成模拟题。
二、理解题目2.1 题目要求在解答任何一道题目之前,首先要对题目进行仔细地阅读和理解。
这可以帮助我们明确题目的要求和限制条件,从而更好地规划解题思路。
2.2 分析输入输出在理解题目的同时,我们还需要对输入和输出进行分析。
通常,题目会明确给出输入格式和输出格式,我们需要将其转化为具体的数据结构或代码逻辑。
2.3 确定解题思路理解题目和分析输入输出后,我们可以根据题目要求和限制条件确定解题思路。
这可能涉及到算法选择、数据结构设计等方面的判断。
三、解题步骤3.1 输入处理在开始编写程序之前,我们需要先进行输入处理。
这包括获取用户输入的数据、对输入进行格式化和校验等步骤。
3.2 算法实现一旦输入处理完成,我们可以着手编写算法来解决问题。
这可能涉及到递归、动态规划、图算法等各种算法思想。
3.3 输出结果当算法实现完成后,我们需要将结果输出。
这可能需要对结果进行格式化和排序等操作,以满足题目的要求。
3.4 程序测试最后,我们需要对程序进行测试,以确保它能够正确地处理各种输入情况。
这包括正常输入、边界输入以及异常输入等情况。
四、解题技巧4.1 知识储备在解题过程中,我们需要运用一些基本的编程知识。
这包括数据类型、运算符、控制流语句等基本概念。
4.2 算法思想解题过程中,合理选择和运用算法思想是至关重要的。
我们可以借鉴已有的经典算法,也可以根据题目特点进行创新。
4.3 优化策略除了正确性以外,我们还可以考虑优化策略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016年JavaB组省赛题
1.煤球数目 (结果填空)
有一堆煤球,堆成三角棱锥形。
具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
2.生日蜡烛 (结果填空)
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
3.凑算式 (结果填空)
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表0~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
5.抽签 (代码填空)
X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
....
那么最终派往W星的观察团会有多少种国别的不同组合呢?
下面的程序解决了这个问题。
数组a[] 中既是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF
....
(以下省略,总共101行)
[java]
1.public class Main
2.{
3.public static void f(int[] a, int k, int n, String s)
4. {
5.if(k==a.length){
6.if(n==0) System.out.println(s);
7.return;
8. }
9.
10. String s2 = s;
11.for(int i=0; i<=a[k]; i++){
12.
13. _____________________________; //填空位置
14. s2 += (char)(k+'A');
15. }
16. }
17.
18.public static void main(String[] args)
19. {
20.int[] a = {4,2,2,1,1,3};
21.
22. f(a,0,5,"");
23. }
24.}
6.方格填数 (结果填空)
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。
要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
7.剪邮票 (结果填空)
如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
8.四平方和 (程序设计)
四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。
比如:
5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符号表示乘方的意思)
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0 <= a <= b <= c <= d
并对所有的可能表示法按a,b,c,d 为联合主键升序排列,最后输出第一个表示法
程序输入为一个正整数N (N<5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开
例如,输入:
5
则程序应该输出:
0 0 1 2
再例如,输入:
12
则程序应该输出:
0 2 2 2
再例如,输入:
773535
则程序应该输出:
1 1 267 838
资源约定:
峰值内存消耗(含虚拟机)< 256M
CPU消耗 < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
9.取球博弈 (程序设计)
两个人玩取球的游戏。
一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目。
如果无法继续取球,则游戏结束。
此时,持有奇数个球的一方获胜。
如果两人都是奇数,则为平局。
假设双方都采用最聪明的取法,
第一个取球的人一定能赢吗?
试编程解决这个问题。
输入格式:
第一行3个正整数n1 n2 n3,空格分开,表示每次可取的数目(0<n1,n2,n3<100) 第二行5个正整数x1 x2 ... x5,空格分开,表示5局的初始球数(0<xi<1000)
输出格式:
一行5个字符,空格分开。
分别表示每局先取球的人能否获胜。
能获胜则输出+,
次之,如有办法逼平对手,输出0,
无论如何都会输,则输出-
例如,输入:
1 2 3
1 2 3 4 5
程序应该输出:
+ 0 + 0 -
再例如,输入:
1 4 5
10 11 12 13 15
程序应该输出:
0 - 0 + +
再例如,输入:
2 3 5
7 8 9 10 11
程序应该输出:
+ 0 0 0 0
资源约定:
峰值内存消耗(含虚拟机)< 256M
CPU消耗 < 3000ms
10.压缩变换 (程序设计)
小明最近在研究压缩算法。
他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。
然而,要使数值很小是一个挑战。
最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。
对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。
变换的过程如下:
从左到右枚举序列,每枚举到一个数字,如果这个数字没有出现过,刚将数字变换成它的相反数,如果数字出现过,则看它在原序列中最后的一次出现后面(且在当前数前面)出现了几种数字,用这个种类数替换原来的数字。
比如,序列(a1, a2, a3, a4, a5)=(1, 2, 2, 1, 2)在变换过程为:
a1: 1未出现过,所以a1变为-1;
a2: 2未出现过,所以a2变为-2;
a3: 2出现过,最后一次为原序列的a2,在a2后、a3前有0种数字,所以a3变为0;
a4: 1出现过,最后一次为原序列的a1,在a1后、a4前有1种数字,所以a4变为1;
a5: 2出现过,最后一次为原序列的a3,在a3后、a5前有1种数字,所以a5变为1。
现在,给出原序列,请问,按这种变换规则变换后的序列是什么。
输入格式:
输入第一行包含一个整数n,表示序列的长度。
第二行包含n个正整数,表示输入序列。
输出格式:
输出一行,包含n个数,表示变换后的序列。
例如,输入:
5
1 2 2 1 2
程序应该输出:
-1 -2 0 1 1
再例如,输入:
12
1 1
2
3 2 3 1 2 2 2 3 1
程序应该输出:
-1 0 -2 -3 1 1 2 2 0 0 2 2
数据规模与约定
对于30%的数据,n<=1000;
对于50%的数据,n<=30000;
对于100%的数据,1 <=n<=100000,1<=ai<=10^9
资源约定:
峰值内存消耗(含虚拟机)< 256M
CPU消耗 < 3000ms。