蓝桥杯模拟试题java本科组试题及复习资料
【IT专家】第四届全国蓝桥杯软件设计大赛 java软件开发本科B组 题目及答案

第四届全国蓝桥杯软件设计大赛java软件开发本科B组题目及答案2013/05/26 0 1.世纪末的星期 曾有邪教称1999年12月31日是世界末日。
当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!于是,“谣言制造商”又修改为星期日......1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?请回答该年份(只写这个4位整数,不要写12月31等多余信息) 参考代码: import java.util.Calendar;import java.util.Date;public class 世纪末的星期{public static void main(String[] args){for(int i=1999;;i+=100){Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date(i-1900,11,31));if(calendar.get(Calendar.DAY_OF_WEEK)-1==0){System.out.println(i);return;}}}} 标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为36 * 495 = 396 * 45 = 17820类这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如:ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
第四届蓝桥杯java本科B组试题及答案

public static void main(String[] args) { aim[0] = new Node(0, 0); dfs(0, 7); System.out.println(kinds);
} }
/*
* 标题: 黄金连分数
黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会 出现。有时需要把这个数字求得很精确。 对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次 升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时 有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!
}
public static void main(String[] args) { dfs(1, 10); System.out.println(kinds);
} }
/*** * * 标题: 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。 地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg) * 从我做起振我做起振兴做起振兴中起振兴中华 * * 比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻 的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。 * * 要求跳过的路线刚好构成“从我做起振兴中华”这句话。 请你帮助小明算一
BigDecimal.ROUND_HALF_UP)); }
}
/* * 标题:错误票据 某涉密单位下发了某种票据,并要在年终全部收回。 每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机 选定的。 因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另
外一个ID重号。 你的任务是通过编程,找出断号的ID和重号的ID。 假设断号不可能发生在最大和最小号。 要求程序首先输入一个整数N(N<100)表示后面数据行数。接着读入N行数据。每 行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000) 每个整数代表一个ID号。 要求程序输出1行,含两个整数m n,用空格分隔。其中,m表示断号ID,n表示重 号ID 例如:用户输入: 2 5 6 8 11 9 10 12 9 则程序输出:7 9
第六届蓝桥杯大赛个人赛省赛(软件类)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,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。
蓝桥杯java模拟赛试题及答案

蓝桥杯java模拟赛试题及答案蓝桥杯Java模拟赛试题及答案一、选择题(每题2分,共20分)1. Java中,下列哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 在Java中,哪个关键字用于定义一个方法?A. functionB. methodC. procedureD. action答案:B3. 下列哪个是Java中的合法标识符?A. 2variableB. variable2C. variable#2D. variable!答案:B4. Java中,哪个关键字用于实现接口?A. implementsB. extendsC. includesD. contains答案:A5. 在Java中,哪个关键字用于定义一个包?A. packageB. groupC. bundleD. container答案:A6. Java中,下列哪个是正确的数组声明方式?A. int[] array;B. array int[];C. int array[];D. array[] int;答案:A7. 在Java中,哪个关键字用于定义一个构造方法?A. constructorB. initializerC. setupD. method答案:D8. Java中,哪个关键字用于实现多态?A. overrideB. extendsC. implementsD. abstract答案:A9. 下列哪个是Java中的引用数据类型?A. intB. charC. StringD. boolean答案:C10. 在Java中,哪个关键字用于抛出异常?A. throwB. throwsC. exceptionD. error答案:B二、简答题(每题10分,共20分)1. 简述Java中异常处理的机制。
答案:Java中的异常处理机制主要通过try、catch、finally和throw关键字来实现。
蓝桥杯java历年真题及答案整理(共129道题目及答案)

蓝桥杯java历年真题及答案整理(参考网络资料整理出来)1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import ;import ;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++) {;}"\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);;}}方法二:import ;import ;import ;import ;import ;import ;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));; // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);"输入串(不大于30个字符)。
大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案一、选择题(每题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试题及答案

蓝桥杯本科java试题及答案蓝桥杯本科Java试题及答案一、选择题(每题2分,共10分)1. 在Java中,以下哪个关键字用于定义类?A. classB. functionC. interfaceD. struct答案:A2. 下列哪个是Java中的合法标识符?A. 2classB. class@2C. _classD. class-class答案:C3. Java中的哪个类提供了一种计算时间和日期的方法?A. DateB. TimeC. CalendarD. Clock答案:C4. 在Java中,以下哪个是正确的条件表达式?A. if (x = 5)B. if (x == 5)C. if (x : 5)D. if (x / 5)答案:B5. Java中的异常处理机制是通过哪两个关键字实现的?A. try-catchB. if-elseC. switch-caseD. for-loop答案:A二、填空题(每题3分,共15分)1. Java中的所有类都是继承自ng.________类。
答案:Object2. 在Java中,________关键字用于实现方法的多态。
答案:override3. Java中的集合框架主要分为两大类:________和________。
答案:List、Set4. Java中的线程同步机制是通过________关键字实现的。
答案:synchronized5. Java中,要实现网络通信,可以使用________类。
答案:Socket三、简答题(共20分)1. 请简述Java中接口和抽象类的区别。
(10分)答案:接口定义了一组可供实现的抽象方法,它不包含任何实现细节,一个类可以实现多个接口。
抽象类可以包含抽象方法和具体方法,它提供了一个通用的模板,一个类只能继承一个抽象类。
接口主要用于定义一个或多个类必须遵守的规则,而抽象类则更侧重于代码的共享和重用。
2. 请解释Java中垃圾回收机制的作用及其工作原理。
第四届蓝桥杯校内选拔赛试题java组

第四届“蓝桥杯”全国软件专业人才设计与创业大赛校内选拔赛试题(Java组)第一部分:准备工作:1、在D:盘中建立一个以自己“学号+姓名”命名的考生文件夹。
如:学号:123456,姓名:张三,则考生文件夹为:123456张三2、答题时:(1)填空题的答案全部写在一个记事本(.txt)文件中,文件名为“tk_姓名的首字母”。
如:姓名:张三,则文件名为“tk_zs.txt”(2)编程题,每个小题一个源文件,每道题的源程序文件名为:“姓名的首字母+题号”。
如:姓名:张三,第1小题,源程序文件名为“zs1.java”3、答题结束时,请把填空题答案文件和所有的源程序文件复制到您的考生文件夹中,再把考生文件夹复制到F:\LQXB4中。
第二部分:试题一、填空题:(第空5分,共50分)1、素数问题输入一个正整数,判断它是否为素数。
素数就是该数只能被1和它本身整除,除1之外的正整数。
#include <stdio.h>#include <math.h> /* 程序中调用平方根函数sqrt,需包含math.h */void main( ){int number,i,k;printf("Please enter a positive integer:");scanf("%d",&number);k=(int)sqrt(number);for(i=2;【1】______________;i++)if(number%i==0) break;/* 如果number能被某个i整除,则number不是素数,提前结束循环 *//*若number是素数,i>k时for循环才结束,若number不是素数,i<=k时,就提前结束循环。
*/if(【2】_______________)printf("%d is a prime number.\n",number);elseprintf("%d isn't a prime number.\n",number);}运行情况1:Please enter a positive integer:77 is a prime number.运行情况2:Please enter a positive integer:2020 isn’t a prime number.2、下面程序段的执行结果是【3】______________3、圆周率我国古代数学家对圆周率方面的研究工作,成绩是突出的。
蓝桥杯2013决赛JAVA本科B组试题

试题一:公式求值问题描述输入n, m, k,输出下面公式的值。
其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数。
组合数的计算公式如下。
输入格式输入的第一行包含一个整数n;第二行包含一个整数m,第三行包含一个整数k。
输出格式计算上面公式的值,由于答案非常大,请输出这个值除以999101的余数。
样例输入313样例输出162样例输入201010样例输出359316数据规模和约定对于10%的数据,n≤10,k≤3;对于20%的数据,n≤20,k≤3;对于30%的数据,n≤1000,k≤5;对于40%的数据,n≤10^7,k≤10;对于60%的数据,n≤10^15,k ≤100;对于70%的数据,n≤10^100,k≤200;对于80%的数据,n≤10^500,k ≤500;对于100%的数据,n在十进制下不超过1000位,即1≤n<10^1000,1≤k≤1000,同时0≤m≤n,k≤n。
提示999101是一个质数;当n位数比较多时,绝大多数情况下答案都是0,但评测的时候会选取一些答案不是0的数据;通过推导,可以将原式变为一个只含2^(n-i)的项和C(n,m)项的公式,然后分别求这两类公式的值,均有快速方法。
最终将这些项组合起来得到答案。
1.import java.math.BigInteger;2.import java.util.Scanner;3.public class Main4.{5.public static BigInteger lucas(BigInteger n,BigInteger m,BigInteger p){6.if(m.equals(BigInteger.ZERO)) return BigInteger.ONE;7.return BigInteger.valueOf(f(n.mod(p).longValue(),m.mod(p).longValue())).multiply(lucas(n.divide(p),m.divide(p),p)).mod(p);8.}9.10.11.public static long f(long n,long m){12.if(m>n) return 1;13.if(n==m|| m==0) return 1;14.if(m>n-m) m=n-m;15.long tmpi=1,tmpn=1,s1=1,s2=1,ans=1;16.for (int i = 1; i<=m; i++) {17.tmpi=i;18.tmpn=n-i+1;19.s1=s1*tmpi%999101;20.s2=s2*tmpn%999101;21.}22.ans = s2*pow1(s1,999099)%999101;23.return ans%999101;25.public static long pow1(long x,long n) {26.if(x==1) return 1;27.if (n==0)28.return 1;29.else {30.while ((n & 1)==0) {31.n>>=1;32.x=(x *x)%999101;33.}34.}35.long result = x%999101;36.n>>=1;37.while (n!=0) {38.x=(x *x)%999101;;39.if ((n & 1)!=0)40.result =result*x%999101;41.n>>=1;42.}43.return result;44.}45.public static void main(String[] args) {46.Scanner sc = new Scanner(System.in);47.BigInteger n = new BigInteger(sc.nextLine());48.BigInteger m = new BigInteger(sc.nextLine());49.int k = Integer.parseInt(sc.nextLine());50.long start = System.currentTimeMillis();51.BigInteger md = new BigInteger("999101");52.long Cnm=lucas(n, m,md).longValue()%999101;53.long sum = 0;54.if(Cnm!=0){55.int[][] a = new int[k][k];56.int h = 1;57.for (int i = 0; i < k; i++) {58.for (int j = 0; j < k; j++) {59.if (j >= h)60.a[i][j] =0;61.else {62.if (j == 0 || j == h - 1)63.a[i][j] = 1;64.else {65.a[i][j] = (a[i - 1][j - 1]*(h - j)+a[i - 1][j])%999101;66.}67.}69.h++;70.}71.long m1 = 1,n1 =1;72.long x=n.subtract(new BigInteger(k+"")).mod(md.subtract(BigInteger.ONE)).longValue();73.long n3 = pow1(2,x);74.for (int i = k - 1; i >= 0; i--) {75.n1=n3*pow1(2,i)%999101;76.m1 = m1*(n.subtract(new BigInteger((k - 1 - i) + "")).mod(md).longValue())%999101;77.sum = (sum+m1*a[k - 1][i]*n1)%999101;78.}79.sum = sum*Cnm%999101;80.}81.System.out.println(sum);82.long end = System.currentTimeMillis();83.}84.85.86.}试题二:九宫重排如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。
蓝桥杯java试题及答案

/*import java.util.scanner;
import java.util.vector;
public class question1 {
public static long count=0;
private void fullpermutation(vectorcharactersourse, vectorcharacter result) {
*假设用户输入的串长度不超过200个字符。
*/
public class simplestring {
public static void main(string args[]){
string str=;
str=(new scanner(system.in)).nextline();
string []str1=str.split([ ]+);
每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。
package question1_9;
import java.util.scanner;
import java.util.vector;
public class question2 {
public static void main(string[] args) {
index++;
}
index++;
}
for (int i = 0; i vector.size(); i++) {
system.out.print(vector.elementat(i));
}
system.out.println();
} catch (arrayindexoutofboundsexception e) {
蓝桥杯java试题及答案

蓝桥杯java试题及答案蓝桥杯是中国著名的计算机科学与技术竞赛,旨在选拔和培养优秀的计算机人才,尤其是高中和大学的学生。
Java是蓝桥杯竞赛中常见的编程语言之一。
本文将介绍一些常见的蓝桥杯Java试题,并提供相应的答案。
一、编程题1. 题目描述:请编写一个Java程序,实现将一个整数数组中的奇数和偶数分别放在两个新数组中,并按照从小到大的顺序排列。
解题思路:可以使用两个ArrayList来保存奇数和偶数,先遍历原数组,将奇数放入奇数数组,将偶数放入偶数数组,然后分别对两个数组进行升序排序。
代码实现:```javaimport java.util.ArrayList;import java.util.Arrays;import java.util.Collections;public class SplitArray {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5, 6};ArrayList<Integer> oddList = new ArrayList<>(); ArrayList<Integer> evenList = new ArrayList<>(); for (int num : arr) {if (num % 2 == 0) {evenList.add(num);} else {oddList.add(num);}}Collections.sort(oddList);Collections.sort(evenList);System.out.println("奇数数组:" + oddList);System.out.println("偶数数组:" + evenList);}}```答案分析:该程序首先定义了一个整型数组 `arr`,然后创建两个ArrayList:`oddList`用于保存奇数,`evenList`用于保存偶数。
2011蓝桥杯模拟试题java 和C(本科)

2011 模拟java 本科注意:本套模拟题主要模拟命题形式与考核范围。
真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:本试卷包含两种题型:“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
1.代码填空(满分2分)在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。
请完善以下代码:public class MyTest{public static void main(String[] args){Vector a = new Vector();for(char i='A'; i<='F'; i++) a.add("" + i);for(int k=0; k<3; k++){int d = ____________________________;System.out.println(a.remove(d));}}}2.代码填空(满分3分)不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。
下面的代码演示了如何把键盘输入的3进制数字转换为十进制。
试完善之。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String s = br.readLine();int n = 0;for(int i=0; i<s.length(); i++){char c = s.charAt(i);if(c<'0' || c > '2') throw new RuntimeException("Format error");n = ______________________;}System.out.println(n);3.代码填空(满分4分)有如下程序,完成的功能为:找出数组中的最大元素。
蓝桥杯Java试题汇总-共48页

1. 历届试题核桃的数量问题描述小张是软件项目经理,他带领3个开发组。
工期紧,今天都在加班呢。
为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。
他的要求是:1. 各组的核桃数量必须相同2. 各组内必须能平分核桃(当然是不能打碎的)3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)输出格式输出一个正整数,表示每袋核桃的数量。
样例输入12 4 5样例输出120样例输入23 1 1 样例输出2 3JAVA源代码1import java.util.Scanner;2public class Main {34public static void main(String[]args){5 Scanner sc=new Scanner(System.in);6int a=sc.nextInt();7int b=sc.nextInt();8int c=sc.nextInt();9int i;10for(i=1;;i++){11if(i%a==0&&i%b==0&&i%c==0)1213break;14 }15 System.out.println(i);16}}2.基础练习Sine之舞时间限制:1.0s 内存限制:512.0MB问题描述最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。
所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。
不妨设An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)Sn=(...(A1+n)A2+n-1)A3+...+2)An+1FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式仅有一个数:N<201。
2014第五届蓝桥杯JAVA本科B组试题及答案DOC

2014第五届蓝桥杯JAVA本科B组试题及答案∙ 1. 武功秘籍答案:(80,81);(82,83);(84,85);(86,87);(88,89);(90,91);(92,93)∙ 2. 切面条答案:1025import java.util.Scanner;public class Main {public static void main(String []args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int num = (int)Math.pow(2, n) + 1;System.out.println(num); //结果:2015}}3. 猜字母答案:qimport java.util.Scanner;/*** 该程序类似与约瑟夫环的问题*/public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);String str = "abcdefghijklmnopqrs";String str1 = "";for(int i = 0;i < 106;i++){str1 = str1 + str;}System.out.println(str1.length());boolean[] arr = new boolean[str1.length()];for(int i=0; i<arr.length; i++) {arr[i] = true; //下标为TRUE时说明字母还在圈里 }int leftCount = str1.length();int countNum = 0;int index = 0;while(leftCount > 1) {if(arr[index] == true) { //当在圈里时if(countNum%2 == 0) { //下标为偶数时arr[index] = false; //该字母退出圈子leftCount --; //剩余字母数目减一}countNum++;}index ++; //每报一次数,下标加一if(index == str1.length()) { //是循环数数,当下标大于n时,说明已经数了一圈, index = 0; //将下标设为零重新开始。
【JAVA】第十一届蓝桥杯省模拟赛答案(本科组)

【JAVA】第⼗⼀届蓝桥杯省模拟赛答案(本科组)⽬录本辣鸡持续垃圾,⼀到六题特别简单,做到第七题有点绕,做到第⼋、九、⼗题就不想做了,晚上补缺失的代码和题解。
⼀、⽆向连通图包含多少条边问题描述 ⼀个包含有2019个结点的⽆向连通图,最少包含多少条边?答案提交 这是⼀道结果填空的题,你只需要算出结果后提交即可。
本题的结果为⼀个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。
题解⼀个有n个顶点的⽆向连通图最多有n(n-1)/2条边,最少有n-1条边。
答案2018⼆、字母重新排列问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被⽤上,单词不⼀定有具体的英⽂意义。
请问,总共能排列如多少个不同的单词。
答案提交 这是⼀道结果填空的题,你只需要算出结果后提交即可。
本题的结果为⼀个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。
题解本题看似是全排列,实际不是,因为有两个A,解题算式:A77/A22 (这⾥都是排列的计算公式,参见Anm,n为下标,m为上标)也就是(7x6x5x4x3x2x1)/2x1=2520答案2520三、在计算机存储中,12.5MB是多少字节?问题描述 在计算机存储中,12.5MB是多少字节?答案提交 这是⼀道结果填空的题,你只需要算出结果后提交即可。
本题的结果为⼀个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。
题解这是真的送分题12.5*1024(转换成KB)*1024(转换成B)=13,107,200答案13107200四、合法括号序列 由1对括号,可以组成⼀种合法括号序列:()。
由2对括号,可以组成两种合法括号序列:()()、(())。
由4对括号组成的合法括号序列⼀共有多少种?答案提交 这是⼀道结果填空的题,你只需要算出结果后提交即可。
本题的结果为⼀个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。
蓝桥杯模拟试题java本科组试题及答案

2011 模拟 java 本科1.代码设计(满分5分) 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。
除了625,还有其它的3位数有这个特征吗?位数有这个特征吗?请编写程序,寻找所有这样的3位数:它的平方的末3位是这个数字本身。
数字本身。
输出结果中,从小到大,每个找到的数字占一行。
比如那个625就输出为:625public static void main(String[] args) {int temp = 0;for (int i = 100; i <= 999; ++i){temp = i*i;temp %= 1000;if (temp == i)System.out .println(i); }}2.代码设计(满分11分) 考虑方程式:a^3 + b^3 = c^3 + d^3其中:“^”表示乘方。
a 、b 、c 、d 是互不相同的小于30的正整数.这个方程有很多解。
比如:a = 1,b=12,c=9,d=10 就是一个解。
因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729.当然,a=12,b=1,c=9,d=10 显然也是解。
显然也是解。
如果不计abcd 交换次序的情况,这算同一个解。
你的任务是:找到所有小于30的不同的正整数解。
把a b c d 按从小到大排列,用逗号分隔,每个解占用1行。
比如,刚才的解输出为:1,9,10,12 不同解间的顺序可以不考虑。
不同解间的顺序可以不考虑。
public static void main(String[] args) {int []arr = newint [31]; for (int i = 1; i <= 30; ++i){arr[i] = (int )i*i*i;}for (int a = 1 ; a <= 27; ++a){for (int b = a+1 ; b <= 28; ++b){for (int c = b+1 ; c <= 29; ++c){ for (int d = c+1 ; d <= 30; ++d){ if ((arr[a] + arr[d])==(arr[b] + arr[c]))System.out .println(a + .println(a + ",""," + b + "," + c + + c + ",""," + d);}}}}}3.代码设计(满分18分) 整数的分划问题。
蓝桥杯软件java本科答案

1.public class first {private static double result;public static void mainString args {int i = new int100;i0 = 1;i1 = 3;String string2 = "";forint j = 2;j < 30;j++{ij = ij-1 + ij-2;result = double ij-1/ij;string2 = new Double result.toString;System.out.printij-1+"/"+ij+" ";System.out.printlnstring2;}}}2.public class two {public static void mainString args {// TODO Auto-generated method stubint a;b;c;int d = 20;b = 1;c = 1;double sum = 0;while d>4{for a = 1;a <= d;a++{b = a+1;while b<d-1{c = b+1;while c <= d-1{sum = 1.0/d+1.0/a +1.0/b +1.0/c;//System.out.printlnsum;if sum == 1System.out.printlnd+" "+a+" "+b+" "+c;// System.out.print"\n";c++;}b++;}}d--;}}}3.public class three {public static void mainString args{double a = new double65;a0 = 1;a1 = 1;a2 = 3;a3 = 7;forint i = 4;i <= 64 ; i++ai = ai-12 + 1;System.out.println"结果为:"+a64;}}4.public class four {static int score = 10;public static void mainString args {int a = {0;1}; //对或错1、0int i = 0;forint x1:aforint x2:aforint x3:aforint x4:aforint x5:aforint x6:aforint x7:aforint x8:aforint x9:aforint x10:a{ int result = {x1;x2;x3;x4;x5;x6;x7;x8;x9;x10};forint z=0;z<=9;z++{if resultz==1score = right z+1;elsescore = wrong z+1;}if score == 100{forint q = 0;q<=9;q++{System.out.printresultq;}System.out.println;}i++;}static int right int num{if num == 1score = 10;score = score2;return score;}static int wrong int num{if num == 1score = 10;score = score - num;return score;}}代码填空题:1.import java.util.Scanner;public class B21 {public static void mainString args {// TODO Auto-generated method stubScanner reader = new ScannerSystem.in;String string = reader.nextLine;System.out.println getFirstNum string;}public static int getFirstNumString s{if s==null || s.length==0return -1;char c = s.charAt0;if c>='0' && c<='9'return Integer.parseInt String.valueOf c; //填空return getFirstNum s.substring1; //填空}2.public class B22 {public static void mainString args{System.out.println"标准 " + Math.PI;double a = 1;int n = 6;forint i=0; i<10; i++{double b = Math.sqrt1-a/2a/2;a = Math.sqrt1-b1-b + a/2a/2;n =2n; //填空System.out.printlnn + " " +an/2; // 填空}}}3.import java.util.;public class B23{public static List<Integer> max5List<Integer> lst{if lst.size<=5 return lst;int a = lst.removelst.size - 1; // 填空//System.out.printlna;List<Integer> b = max5lst;//List<Integer> b = lst;forint i=0; i<b.size; i++{int t = b.geti;if a>t{b.seti; a; // 填空// b.removei;// b.adda;a = t;}}return b;}public static void mainString args{List<Integer> lst = new Vector<Integer>;lst.addAllArrays.asList12;127;85;66;27;34;15;344;156;344;29;47;System.out.println max5lst;}}程序题:1.import java.util.Scanner;public class C1 {public static void mainString args {// TODO Auto-generated method stubScanner reader = new ScannerSystem.in;String s1 = reader.nextLine;String s2 = reader.nextLine;int x = getX s1; s2;int y = getY s1; s2;int a = x;int b = y;union a; b;System.out.println minX x+";"+minX y+";"+maxX x-minX x+";"+maxX y-minX y;}static void union int x;int y{int a= new int4;int b = new int4;forint i = 0;i<4;i++{ai = xi;}int uX = secondMin a;boolean xb = uX<=Math.max x0;x1&&uX>=Math.min x1;x0&&uX<=Math.max x2;x3&&uX>=Math.min x2; x3;forint i = 0;i<4;i++{bi = yi;}int uY = secondMin b;boolean yb = uY<=Math.max y0;y1&&uY>=Math.min y1;y0&&uY<=Math.max y2;y3&&uY>=Math.min y2; y3;if xb&&yb&&a1-a2=0&&b1-b2=0{System.out.printlnuX+";"+uY+";"+a1-a2+";"+b1-b2;}else {System.out.println"不存在";}}static int getXString s1;String s2{String ss1 = s1.split";";String ss2 = s2.split";";int xy = new int4;xy0 = Integer.parseInt ss10;xy1 = Integer.parseInt ss12;xy2 = Integer.parseInt ss20;xy3 = Integer.parseInt ss22;return xy;}static int getYString s1;String s2 {String ss1 = s1.split";";String ss2 = s2.split";";int xy = new int4;xy0 = Integer.parseInt ss11;xy1 = Integer.parseInt ss13;xy2 = Integer.parseInt ss21;xy3 = Integer.parseInt ss23;return xy;}static int maxX int x{int temp;forint i = 0;i <= 2;i++{if xi>xi+1{temp = xi;xi = xi+1;xi+1 = temp;}}return x3;}static int minX int x{int temp;forint i = 0;i <= 2;i++{if xi<xi+1{temp = xi;xi = xi+1;xi+1 = temp;}}return x3;}static int secondMin int x{int temp;forint i = 0;i<3;i++forint j = 0;j<x.length-i-1;j++{if xj<xj+1{temp = xj;xj = xj+1;xj+1 = temp;}}return x2;}}2.public class C2 {public static void mainString args {// TODO Auto-generated method stub//String string = "123+4+5+67-89";char a = {' ';'+';'-'};char num = {'1';'2';'3';'4';'5';'6';'7';'8';'9'};forchar x1:aforchar x2:aforchar x3:aforchar x4:aforchar x5:aforchar x6:aforchar x7:aforchar x8:a {int result = 0;char s = {x1;x2;x3;x4;x5;x6;x7;x8};String string = "";forint i = 0;i<= 7;i++{string = string+numi+si;}string = string+num8;string= string.replaceAll" ";"";String jianString = string.split"-";int addResult = new int jianString.length;addResult0 = 0;String addString = jianString0.split"+";forint j = 0;j<addString.length;j++{addResult0 += Integer.parseInt String.valueOf addStringj;}result = addResult0;forint i = 1;i<jianString.length;i++{String num1 = jianStringi.split"+";result = result - Integer.parseInt String.valueOf num10;forint p = 1;p<num1.length;p++result += Integer.parseInt String.valueOf num1p;}if result == 110System.out.printlnstring}}}3.import java.util.Scanner;public class C33 {public static void mainString args{int num = getNum;int d = gcd num1; num2;//中瓶和小瓶容量的最大公约数if num0/2 <= num1 + num2 && num0/2%d == 0{System.out.printlnnum3 + " " + num4 + " " + num5;fenjiu num3; num4; num5;num;}else{System.out.println"不可能";}}static int getNum{Scanner readerScanner = new ScannerSystem.in;String string = readerScanner.nextLine.split";";int i = 0;int num = new int7;while i < 7{numi = Integer.parseInt stringi;i++;}return num;}static void fenjiu int num1;int num2;int num3;int num{//C2X - C3Y = 1int b1 = num1;c1 = num2;int a = num1;b = num2;c = num3;result = num6;if b == result||c == result||a == resultSystem.out.print"";else {//12;8;5;12;0;0;6// 1. 大瓶子只能倒入中瓶子// 2. 中瓶子只能倒入小瓶子// 3. 小瓶子只能倒入大瓶子// 4. 小瓶子只有在已经装满的情况下才能倒入大瓶// 5. 若小瓶子被倒空;则无论中瓶子是否满;应马上从中瓶子倒入小瓶子if c == c1{// 4. 小瓶子只有在已经装满的情况下才能倒入大瓶子a = a + c;c = 0;System.out.printlna + " " + b + " " + c;fenjiu a; b; c; num;}else {if c == 0 && b > 0{// 5. 若小瓶子被倒空;则无论中瓶子是否满;应马上从中瓶子倒入小瓶子if b > c1{c = c1;b = b - c1;System.out.printlna + " " + b + " " + c;fenjiu a; b; c; num;}else {c = b;b = 0;System.out.printlna + " " + b + " " + c;fenjiu a; b; c; num;}}else {if b = b1{a = a - b1 + b;b = b1;System.out.printlna + " " + b + " " + c;fenjiu a; b; c; num;}else {b = b - c1 + c;c = c1;System.out.printlna + " " + b + " " + c;fenjiu a; b; c; num;}}}}}public static int gcd int m; int n{int a = n; b = m;while true{if a = a % b == 0return b;if b = b % a == 0return a;}}}本答案仅供参考;如有不同意见属正常..希望本答案对您的学习有帮助谢谢参阅。
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.汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011 模拟java 本科注意:本套模拟题主要模拟命题形式与考核范围。
真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:本试卷包含两种题型:“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
1.代码填空(满分2分)在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。
请完善以下代码:public class MyTest{public static void main(String[] args){Vector a = new Vector();for(char i='A'; i<='F'; i++) a.add("" +i);for(int k=0; k<3; k++){int d = ____________________________;System.out.println(a.remove(d));}}}new Random().nextInt(6-k) //(int)(Math.random()*(6-k))2.代码填空(满分3分)不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。
下面的代码演示了如何把键盘输入的3进制数字转换为十进制。
试完善之。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String s = br.readLine();int n = 0;for(int i=0; i<s.length(); i++){char c = s.charAt(i);if(c<'0' || c > '2') throw newRuntimeException("Format error");n = ______________________;}System.out.println(n);3*n+c-'0'3.代码填空(满分4分)有如下程序,完成的功能为:找出数组中的最大元素。
请填写程序的中空白,使程序运行正确。
public class test{public static void main(String[] args) { intarray[]={0,34,67,90,21,-9,98,1000,-78};System.out.println(new test().findMax (array, 0));}public int findMax(int array[],int index) {if(array==null || array.length==0){return 0;}int max=array[0];while(index<array.length-1){max=____________________}if(max<array[index]) max= array[index];return max;}}max>array[++index]?max:array[index]4.代码填空(满分5分)电视台开宝箱节目:打进电话的人可以开启一个宝箱。
箱子中有一件礼品。
礼品是iphone的机率为1/12;是mp3 的机率为1/5;是洗衣粉的机率为1/2;剩余是KFC优惠券。
每次打进电话,宝箱会重置。
以下程序模拟了该抽奖过程。
请填写缺失的部分。
public static void main(String[] args){int i = (int) (Math.random() * _____________);if (i < 5) {System.out.println("恭喜中了:iphone手机");}else if (i < 17) {System.out.println("恭喜中了:mp3");} else if (i < 47) {System.out.println("恭喜中了:洗衣粉");} else {System.out.println("恭喜中了:KFC优惠券");}}605.代码填空(满分6分)下列代码求出一个二进制串中连续的1或连续的0出现的最大次数。
请填缺失代码。
例如:s = “1011”则返回:4又例如:s=”0111100000”则返回:5public static int getMaxContinuity(String s){int max_1 = 0;int max_0 = 0;int n_1 = 0; // 当前1连续的次数int n_0 = 0; // 当前0连续的次数for(int i=0; i<s.length(); i++) {if(s.charAt(i)=='0'){n_0++;________;}else{n_1++;_________;}if(n_1 > max_1) max_1 = n_1;if(n_0 > max_0) max_0 = n_0;}return max_1>max_0? max_1 : max_0);}n_1=0 n_0=06.代码填空(满分9分)下列代码把16进制表示的串转换为3进制表示的串。
试完善之。
例如:x=“5”则返回:“12”又例如:x=”F”则返回:“120”private static int getRealValue(char x){if(x>='0' && x<='9') return x-'0';if(x>='a' && x<='f') return x-'a'+10;if(x>='A' && x<='F') return x-'A'+10;return 0;}public static String jin_zhi_16_3(String x){int n = 0; // 累加真值for(int i=0; i<x.length(); i++){n = _________ +getRealValue(x.charAt(i)); // 填空}String t = "";for(;;){if(n==0) break;t = (n % 3) + t;_____________; // 填空}return t;}16*n n/=37.代码设计(满分5分)625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。
除了625,还有其它的3位数有这个特征吗?请编写程序,寻找所有这样的3位数:它的平方的末3位是这个数字本身。
输出结果中,从小到大,每个找到的数字占一行。
比如那个625就输出为:625public static void main(String[] args) { int temp = 0;for(int i = 100; i <= 999; ++i){temp = i*i;temp %= 1000;if(temp == i)System.out.println(i);}}8.代码设计(满分11分)考虑方程式:a^3 + b^3 = c^3 + d^3其中:“^”表示乘方。
a、b、c、d是互不相同的小于30的正整数。
这个方程有很多解。
比如:a = 1,b=12,c=9,d=10 就是一个解。
因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。
当然,a=12,b=1,c=9,d=10 显然也是解。
如果不计abcd交换次序的情况,这算同一个解。
你的任务是:找到所有小于30的不同的正整数解。
把a b c d 按从小到大排列,用逗号分隔,每个解占用1行。
比如,刚才的解输出为:1,9,10,12不同解间的顺序可以不考虑。
public static void main(String[] args) {int []arr = new int[31];for(int i = 1; i <= 30; ++i){arr[i] = (int)i*i*i;}for(int a = 1 ; a <= 27; ++a){for(int b = a+1 ; b <= 28; ++b){for(int c = b+1 ; c <= 29; ++c){for(int d = c+1 ; d <= 30; ++d){if((arr[a] + arr[d])==(arr[b] +arr[c]))System.out.println(a + "," + b + "," + c + "," + d);}}}}}9.代码设计(满分18分)整数的分划问题。
如,对于正整数n=6,可以分划为:65+14+2, 4+1+13+3, 3+2+1, 3+1+1+12+2+2, 2+2+1+1, 2+1+1+1+11+1+1+1+1+1+1现在的问题是,对于给定的正整数n,编写算法打印所有划分。
用户从键盘输入n (范围1~10)程序输出该整数的所有划分。
import java.util.*;public class Test {private static LinkedList<String> str=newLinkedList<String>();public static void main(String[] args){ int input = 10;Test.integerDivide(input, input);}public static void integerDivide(int limit, int max){if(1 == max) {str.add(String.valueOf(1));formatResult(str);str.removeLast();return;}if(0 == max) {formatResult(str);return;}for(int i = limit ; i >= 1; --i){if(i <= max){str.add(String.valueOf(i));integerDivide(i, max-i);str.removeLast();}}}public static voidformatResult(LinkedList<String> s){System.out.print(s.getFirst());for(int i=1;i<s.size();i++)System.out.print("+"+s.get(i));System.out.println();}}10.代码设计(满分20分)一个N位的十进制正整数,如果它的每个位上的数字的N 次方的和等于这个数本身,则称其为花朵数。