蓝桥杯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 优化策略除了正确性以外,我们还可以考虑优化策略。
蓝桥杯java试题及答案
蓝桥杯java试题及答案【篇一:蓝桥杯java历年真题(共129道题目及答案)】这样的,如果给定n个不同字符,将这n个字符全排列,最终的结果将会是n!种。
如:给定a、b、c三个不同的字符,则结果为:abc^ acb、bac、bca、cab> cba—共3!=3*2=6 种情况。
package questiord_9;〃有问题。
-广import java.util.scan ner;import java.util.vector;public class questiord {public static long count=0;private void fullpermutation(vectorcharactersourse, vectorcharacter 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++) { vectorcharactertsourse=new vectorcharacter(sourse); vectorcharactertresult=new vectorcharacter( result); tresult.add(sourse.elementat(i)); tsourse.remove(i);new question1().fullpermutation(tsourse, tresult);}}public static void main(stringQ args) { scanner seanner=new scanner(system」n); int n=scanner.nextint();vectorcharacter sourse=new vectorcharacter(); vectorcharacter result=new vectorcharacter();for (int i = 0; i n; i++) {sourse.add((char)(a-i-i));}new questiord().fullpermutation(sourse, result); system.out. pri ntln (questionl.count);}}*/方法二import java.util.arraylist;import java.util.iterator;import java.util」inkedhashset;import java.util.list;import java.util.sca nn er;import java.util.set;public class demo03 {II去掉重复元素,放入lispublic static void removeduplicate(string s,setcharacter lis){ for(char x:s.tochararray()){ lis.add(x);}}II为方便操作将sets转lispublic static void convert(listcharacter lis,setcharactersets){ iteratorcharacter iter = sets.iterator();while(iter.hasnext()){ lis.add(iter.next());II检测符合条件的元素组合public static void check(setcharacter sets){ listcharacter lis = new arraylistcharacter(); convert(lis,sets); II为方便操作将sets 转lis stringbuffer sb = new stringbuffer();for(int i=0;ilis.size()-2;i++){for(int j=i+1 ;j+1 lis.size();j++){// 向后添加两位,所以j+1 lis.size() for(int k=j+1;klis.size();k++){sb.appe nd(lis.get(i)); sb.append(lis.get(j)); sb.append(lis.get(k)); system.out.println(sb); II输出组合sb.setlength(O); II清空}}}}public static void main(string[] args){scanner scan = new scanner(system.in); system.out.println(输入串(不夭于30个李符)。
[蓝桥杯]2016蓝桥省赛B组题目及详解
[蓝桥杯]2016蓝桥省赛B组题⽬及详解/*———————————————————————————————————————————————————————————【结果填空题】T1 (分值:3)题⽬:煤球数⽬有⼀堆煤球,堆成三⾓棱锥形。
具体:第⼀层放1个,第⼆层3个(排列成三⾓形),第三层6个(排列成三⾓形),第四层10个(排列成三⾓形),....如果⼀共有100层,共有多少个煤球?请填表⽰煤球总数⽬的数字。
注意:你提交的应该是⼀个整数,不要填写任何多余的内容或说明性⽂字。
1 * (1)2 *** (3)3 ****** (6)4 ********** (10)5 (15)————————————————————————————————————————————————————————————*/ ///*** pre 定义上⼀层* plus 定义增量差值 */#include<iostream>using namespace std ;int main(int argc, char const *argv[]){int pre = 1 ; //int plus = 2 ; //long sum = 1 ;for (int k = 2; k <= 100; ++k){sum += (pre+plus) ;pre = pre + plus ;//sum+=preplus++ ;}cout << sum << endl ;return0;}//结果:171700/*———————————————————————————————————————————————————————————【结果填空题】T2 (分值:5)题⽬:⽣⽇蜡烛某君从某年开始每年都举办⼀次⽣⽇party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他⼀共吹熄了236根蜡烛。
请问,他从多少岁开始过⽣⽇party的?请填写他开始过⽣⽇party的年龄数。
java蓝桥杯b组题目
java蓝桥杯b组题目
Java蓝桥杯B组题目是指蓝桥杯全国软件和信息技术专业人才
大赛的B组Java题目。
蓝桥杯是中国最具影响力的计算机竞赛之一,旨在选拔和培养优秀的计算机人才。
每年的蓝桥杯比赛都会发布一系列的题目,其中包括了不同难
度和类型的题目,涵盖了计算机科学与技术的各个方面。
B组题目
主要面向大学本科及以下学生,难度适中。
由于蓝桥杯竞赛的题目每年都会更新,所以具体的B组题目会
根据比赛年份而有所不同。
以下是一些可能出现的B组题目类型:
1. 算法题,要求学生设计和实现特定的算法,如排序算法、查
找算法、图算法等。
2. 编程题,要求学生使用Java语言编写程序,解决实际问题,如字符串处理、数学计算、模拟等。
3. 数据结构题,要求学生使用合适的数据结构来解决问题,如栈、队列、链表、树等。
4. 网络编程题,要求学生使用Java网络编程知识,实现网络通信、客户端-服务器模型等。
5. 图形界面题,要求学生使用Java图形界面库,设计和实现用户友好的界面,完成特定功能。
以上只是一些可能的题目类型,具体的题目内容会根据比赛年份和主题而有所不同。
参赛选手需要具备扎实的Java编程基础,熟悉常用的算法和数据结构,并且具备一定的问题解决能力和编程实践经验。
希望以上回答能够满足你的需求。
如果你有更具体的问题或需要更详细的回答,请随时提出。
java蓝桥杯b组题目
java蓝桥杯b组题目
摘要:
1.Java 编程语言简介
2.蓝桥杯B 组题目概述
3.Java 蓝桥杯B 组题目的解题思路和方法
4.总结
正文:
一、Java 编程语言简介
Java 是一种广泛使用的计算机编程语言,它具有跨平台性、安全性、简单性、面向对象等特点,被广泛应用于企业级应用开发、桌面应用、移动应用和Web 开发等领域。
Java 语言的特性使得它在全球范围内拥有大量的开发者社区,成为当今世界最流行的编程语言之一。
二、蓝桥杯B 组题目概述
蓝桥杯是中国的一项全国性计算机科学比赛,每年举办一次,吸引了来自全国各地的大量高校和中学生参加。
蓝桥杯比赛按照参赛选手的年级和水平分为A 组、B 组和C 组。
B 组是针对高中生举办的比赛,主要考察选手的计算机编程能力。
三、Java 蓝桥杯B 组题目的解题思路和方法
对于Java 蓝桥杯B 组题目,解题的关键在于深入理解Java 编程语言的基本语法和面向对象编程的思想,熟练掌握Java 的常用类库和API,以及灵活运用数据结构和算法。
在解题过程中,需要注意以下几点:
1.仔细阅读题目,理解题目要求和约束条件,确定解题思路。
2.编写代码时,要注重代码的可读性和可维护性,遵循Java 编码规范。
3.在编写程序时,要充分考虑边界条件和异常情况,保证程序的健壮性。
4.在解决复杂问题时,可以采用分治、动态规划等算法思想,提高程序的效率。
四、总结
Java 蓝桥杯B 组题目是针对高中生举办的计算机编程比赛,对于提高选手的编程能力和解决实际问题的能力有重要意义。
蓝桥杯试题及答案
蓝桥杯试题及答案蓝桥杯是面向全国高校计算机专业学生的程序设计竞赛,由工业和信息化部人才交流中心主办,旨在提高学生的编程能力、算法设计能力以及团队合作能力。
以下是一份蓝桥杯试题及答案的示例,供参考。
### 蓝桥杯程序设计竞赛试题及答案#### 题目一:求最大公约数题目描述:给定两个正整数 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;}```#### 题目三:二分查找题目描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。
Java本科蓝桥杯比赛试题,算法练习
1.黄金分割数0.618与美学有重要的关系。
舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子...黄金分割数是个无理数,也就是无法表示为两个整数的比值。
0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.618034 有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。
它后面的每一个项都是前边两项的和。
如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。
请写出该比值。
格式是:分子/分母。
比如:29/472.有一群海盗(不多于20人),在船上比拼酒量。
过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。
再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。
当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。
他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...例如,有一种可能是:20,5,4,2,0public class Test_2 {public static void main(String[] args) {for(int i=1; i<=16; i++)for(int j=1; j<=15; j++)for(int k=1; k<=14; k++)for(int l=1; l<=13; l++){int sum = i + j + k + l;if(sum <= 20 && 1.0/sum + 1.0/(sum-i) + 1.0/(sum-i-j) + 1.0/(sum-i-j-k) == 1.0)System.out.println(sum+","+(sum-i)+","+(sum-i-j)+","+l);}}}3.汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
第六届蓝桥杯大赛个人赛省赛(软件类)Java 大学B组试题
第六届蓝桥杯大赛个人赛省赛(软件类)Java 大学B组试题三角形面积如图1所示。
图中的所有小方格面积都是1。
那么,图中的三角形面积应该是多少呢?请填写三角形的面积。
不要填写任何多余内容或说明性文字。
立方变自身观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 18^3 = 512 5+1+2=817^3 = 4913 4+9+1+3=17...请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?请填写该数字,不要填写任何多余的内容或说明性的文字。
三羊献瑞观察下面的加法算式:祥瑞生辉+ 三羊献瑞-------------------三羊生瑞气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
循环节长度两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m){n = n % m;V ector v = new V ector();for(;;){v.add(n);n *= 10;n = n % m;if(n==0) return 0;if(v.indexOf(n)>=0)_______System.out.println(v.indexOf(n))__________________________ ; //填空}}注意,只能填写缺少的部分,不要重复抄写已有代码。
不要填写任何多余的文字。
九数组分数1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。
第12届蓝桥杯大赛软件赛省赛Java语言B组
第十二届蓝桥杯大赛软件赛省赛Java大学B组第十二届蓝桥杯大赛软件赛省赛Java大学B组【考生须知】考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。
考试时间为4小时。
考试期间选手可浏览自己已经提交的答案,被浏览的答案允许拷贝。
时间截止后,将无法继续提交或浏览答案。
对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
选手必须通过浏览器方式提交自己的答案。
选手在其它位置的作答或其它方式提交的答案无效。
试题包含“结果填空”和“程序设计”两种题型。
结果填空题:要求选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
程序设计题:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
所有源码必须在同一文件中。
调试通过后,拷贝提交。
注意:不要使用package语句。
注意:选手代码的主类名必须为:Main,否则会被判为无效代码。
注意:如果程序中引用了类库,在提交时必须将import语句与程序的其他部分同时提交。
只允许使用Java自带的类库。
第十二届蓝桥杯大赛软件赛省赛1第十二届蓝桥杯大赛软件赛省赛Java大学B组试题A:ASC本题总分:5分【问题描述】已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题A:ASC2第十二届蓝桥杯大赛软件赛省赛Java大学B组试题B:卡片本题总分:5分【问题描述】小蓝有很多数字卡片,每张卡片上都是数字0到9。
小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
java算法第七届蓝桥杯B组(题+答案)7.剪邮票
java算法第七届蓝桥杯B组(题+答案)7.剪邮票7.剪邮票 (结果填空)如【图1.jpg】, 有12张连在⼀起的12⽣肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接⼀个⾓不算相连)⽐如,【图2.jpg】,【图3.jpg】中,粉红⾊所⽰部分就是合格的剪取。
请你计算,⼀共有多少种不同的剪取⽅法。
请填写表⽰⽅案数⽬的整数。
注意:你提交的应该是⼀个整数,不要填写任何多余的内容或说明性⽂字。
思路:感觉还是先排列,从12个邮票中选5个出来,然后对每个邮票搜索,同⼀⾏,同⼀列,则表⽰连接到,如果连接到就定义该块邮票被访问过,最后判断5个邮票是否都被访问过,是就说明是连通的,但是这个不是全排列,应该是从12个选5个出来从12个选5个。
判断5个是否相连,符合⼀个visit设为true,五个true,count++(这个题没弄懂,参考⽹上的)1 public class _7剪邮票 {2 static int a[] = new int[5];3 public static void main(String[] args) {4 int count = 0;5 for (a[0] = 0; a[0] < 12; a[0]++) {6 for (a[1] = a[0] + 1; a[1] < 12; a[1]++) {7 for (a[2] = a[1] +1 ; a[2] < 12; a[2]++) {8 for (a[3] = a[2]+1; a[3] < 12; a[3]++) {9 for (a[4] = a[3]+1; a[4] < 12; a[4]++) {10 if (judge()) {11 count++;12 }13 }14 }15 }16 }17 }18 System.out.println(count);19 }20 private static boolean judge() {21 boolean visit[] = new boolean[5];22 dfs(visit,0);23 return visit[0]&&visit[1]&&visit[2]&&visit[3]&&visit[4];24 }2526 private static void dfs(boolean[] visit, int i) {27 visit[i] = true;28 for (int j = 0; j < visit.length; j++) {29 if (!visit[j]&&(a[i]/4==a[j]/4)&&(a[i]==a[j]+1||a[i]==a[j]-1)) {30 dfs(visit, j);31 }32 if (!visit[j]&&(a[i]==a[j]+4||a[i]==a[j]-4)) {33 dfs(visit, j);34 }35 }36 }37 }运⾏结果:116。
蓝桥杯java历年真题及答案整理41~56
蓝桥杯java历年真题及答案整理41~56 41. 低碳⽣活⼤奖赛/*某电视台举办了低碳⽣活⼤奖赛。
题⽬的计分规则相当奇怪:每位选⼿需要回答10个问题(其编号为1到10),越后⾯越有难度。
答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选⼿必须回答问题,不回答按错误处理)。
每位选⼿都有⼀个起步的分数为10分。
某获胜选⼿最终得分刚好是100分,如果不让你看⽐赛过程,你能推断出他(她)哪个题⽬答对了,哪个题⽬答错了吗?如果把答对的记为1,答错的记为0,则10个题⽬的回答情况可以⽤仅含有1和0的串来表⽰。
例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。
每个答案占⼀⾏。
*/package Question40_49;public class Question41 {public static void exeForward(int question[],int index,int sum,int needSum) {if(index<=10){for (int i = 0; i <= 1; i++) {question[index]=i;int t=sum;if(i==0){sum-=index;}else {sum*=2;}exeForward(question, index+1, sum, needSum);question[index]=(i==1?0:1);sum=t;}}else {if(sum==needSum){for (int i = 1; i <= 10; i++) {System.out.print(question[i]);}System.out.println();return;}else {return;}}}public static void main(String[] args) {int needSum=100;int question[]=new int[12];exeForward(question, 1, 10, 100);}}运⾏结果:0010110011011101000010110100001234567891000101100110111010000101101000042. 益智玩具import java.math.BigInteger;/** 汉诺塔(⼜称河内塔)问题是源于印度⼀个古⽼传说的益智玩具。
蓝桥杯java连通问题试题及答案
蓝桥杯java连通问题试题及答案BMP是常见的图像存储格式。
如果⽤来存⿊⽩图像(颜⾊深度=1),则其信息⽐较容易读取。
与之相关的数据:(以下偏移均是从⽂件头开始)偏移:10字节, 长度4字节:图像数据真正开始的位置。
偏移:18字节, 长度4字节:位图的宽度,单位是像素。
偏移:22字节, 长度4字节:位图的⾼度,单位是像素。
从图像数据开始处,每个像素⽤1个⼆进制位表⽰。
从图⽚的底⾏开始,⼀⾏⼀⾏向上存储。
Windows规定图像⽂件中⼀个扫描⾏所占的字节数必须是4字节的倍数,不⾜的位均以 0 填充。
例如,图⽚宽度为45像素,实际上每⾏会占⽤8个字节。
可以通过Windows⾃带的画图⼯具⽣成和编辑⼆进制图像。
需要在“属性”中选择“⿊⽩”,指定为⼆值图像。
可能需要通过查看 | 缩放 | ⾃定义... 把图像变⼤⽐例⼀些,更易于操作。
图像的左下⾓为图像数据的开始位置。
⽩⾊对应1,⿊⾊对应0我们可以定义:两个点距离如果⼩于2个像素,则认为这两个点连通。
也就是说:以⼀个点为中⼼的九宫格中,围绕它的8个点与它都是连通的。
如:t1.bmp 所⽰,左下⾓的点组成⼀个连通的群体;⽽右上⾓的点都是孤⽴的。
程序的⽬标是:根据给定的⿊⽩位图,分析出所有独⽴连通的群体,输出每个连通群体的⾯积。
所谓⾯积,就是它含有的像素的个数。
输⼊数据固定存在in.bmp中。
如⽰例的in.bmp,程序应该输出:128152133该输出表⽰:共有4个连通群体。
输出的连通体⾯积间的顺序可以随意。
请编程解决上述问题。
我们测试程序的时候,会使⽤不同的in.bmp⽂件。
要求考⽣把所有类写在⼀个⽂件中。
调试好后,存⼊与考⽣⽂件夹下对应题号的“解答.txt”中即可。
相关的⼯程⽂件不要拷⼊。
请不要使⽤package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调⽤。
不能使⽤1.6或更⾼版本。
答案import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.ArrayList;import javax.imageio.ImageIO;public class Node {public static nodes[][] ns = null;public static int width, height;public static int result = 0;public static void f(int x, int y) {if (x < 0 || x >= width || y < 0 || y >= height)return;if (!ns[x][y].visited) {ns[x][y].visited = true;if (ns[x][y].value) {result++;f(x - 1, y);f(x - 1, y - 1);f(x - 1, y + 1);f(x + 1, y);f(x + 1, y - 1);f(x + 1, y + 1);f(x, y - 1);f(x, y + 1);}}}public static void main(String[] args) throws IOException { // TODO Auto-generated method stubFile file = new File("in.bmp");BufferedImage bi = ImageIO.read(file);width = bi.getWidth();height = bi.getHeight();ns = new nodes[width][height];for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {ns[x][y] = new nodes();if (bi.getRGB(x, y) == -1) {ns[x][y].value = false;} else {ns[x][y].value = true;}}}// ------------jisuanfor (int i = 0; i < width; i++)for (int j = 0; j < height; j++) {result = 0;f(i, j);if (result == 0)continue;elseSystem.out.println(result);}}}class nodes {public boolean visited = false; public boolean value = false; }。
- 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。