蓝桥杯java历年真题及答案整理(共129道题目及答案)(5)

2018-12-23 23:59

list.add(\list.add(\

list.add(\

ArrayList out=new ArrayList(); out.add(list.get(0)); list.remove(0); while(list.size()>0){

out.add(list.get(0)); list.remove(0); out.add(out.get(0)); out.remove(0);

}

int i=out.size()-1; while(i>0){ }

System.out.print(out.get(i--)+\

System.out.print(out.get(0)); } }

方法三:

import java.util.Arrays; import java.util.List; import java.util.Vector; public class Demo05 {

public static List moveCard(List src) { if (src == null) return null;

List dst = new Vector(); for (;;) {

if (src.size()==0)

break; // 填空 src.add(src.remove(0));

dst.add(src.remove(0)); // 填空 }

return dst;

}

public static void main(String[] args) { List a = new Vector();

a.addAll(Arrays.asList(\ \ System.out.println(moveCard(a)); } }

运行结果:

[2, 4, 6, 8, 10, Q, A, 5, 9, K, 7, 3, J]

21

8.第一个数字(数字的值返回)

以下的静态方法实现了:把串s中第一个出现的数字的值返回。 如果找不到数字,返回-1 例如:

s = \ 则返回2 s = \ 则返回8 s = \ 则返回-1

以下的静态方法实现了:把串s中第一个出现的数字的值返回。 请分析代码逻辑,并推测划线处的代码。 答案写在“解答.txt”文件中

注意:只写划线处应该填的内容,划线前后的内容不要抄写。

publicclassDemo04 { }

publicstaticint getFirstNum(String s) { }

publicstaticvoid main(String[] args) { }

String s1 = \; //则返回2 String s2 = \; //则返回8 String s3 = \; //则返回-1

System.out.println(getFirstNum(s1)); System.out.println(getFirstNum(s2)); System.out.println(getFirstNum(s3)); if (s == null || s.length() == 0)

return -1;

char c = s.charAt(0); if (c >= '0'&& c <= '9')

return s.charAt(0)-'0'; // 填空

returngetFirstNum(s.substring(1)); // 填空

运行结果:

2 8 -1

9.放麦子

你一定听说过这个故事。国王对发明国际象棋的大臣很佩服, 问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子, 在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子, 在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍, 直到放完所有棋盘格(国际象棋共有64格)。 国王以为他只是想要一袋麦子而已,哈哈大笑。

当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!

22

请你借助计算机准确地计算,到底需要多少粒麦子。 答案写在“解答.txt”中,不要写在这里!

package Question1_9;

import java.math.BigInteger; publicclass Question9 { }

publicstaticvoid main(String[] args) { }

BigInteger total=new BigInteger(\); BigInteger base=new BigInteger(\); for (int i = 0; i < 64; i++) { }

System.out.println(total);

System.out.println(base.pow(64).add(new BigInteger(\)));

total=total.add(base.pow(i)); //System.out.println(total);

运行结果:

18446744073709551614

方法二:

import java.math.BigInteger;

public class Demo03 {

public static void main(String[] args) { BigInteger bi = new BigInteger(\

for(int i=0;i<64;i++){

bi = bi.add(BigInteger.valueOf((long)(Math.pow(2, i)))); }

System.out.println(bi); } }

10.求21位数的水仙花数

package Question10_19; import java.math.BigInteger; import java.util.Scanner;

class Question10Think2OptimizeMustRemember {

public static int size;

public static int array[]={0,1,2,3,4,5,6,7,8,9};

public static BigInteger powArray[] = new BigInteger[10]; // 记录0~9的size次方 public static int usedTimes[]=new int[10];// 记录0~9的使用次数

public static BigInteger iPowSizeMultiplyj[][]; //记录0到9中任意数字i的N次方乘以i出现的次public static BigInteger MAX; // size位的数字能表示的最大值 public static BigInteger MIN; // size位的数字能表示的最小值

23

数j的结果(i^N*j)

public static void init() {// 用于初始化powArray[],MAX,MIN }

public static void exhaustion(int arrayIndex,int used,BigInteger current) {

if (current.compareTo(MAX)>1) {//超过最大值,递归结束 }

if(used==size){//size位全部分配完毕 }

if(arrayIndex==0){ }

if(current.add(iPowSizeMultiplyj[arrayIndex][size-used]).compareTo(MIN)<0){ }

24

for (int i = 0; i < 10; i++) {// 初始化powArray[] }

MIN = (new BigInteger(\初始化最小值

MAX = (new BigInteger(\初始化最大值 iPowSizeMultiplyj=new BigInteger[10][size+1]; //初始化iPowSizeMultiplyj[][] for (int i = 0; i < 10; i++) { }

iPowSizeMultiplyj[i][0]=BigInteger.valueOf(0); for (int j = 1; j < size+1; j++) { }

iPowSizeMultiplyj[i][j]=iPowSizeMultiplyj[i][j-1].add(powArray[i]); powArray[i] = (new BigInteger(\

return;

if(current.compareTo(MIN)<0){ //已获得的值小于最小值 }

return;

String s=current+\

int avaliableValueUsed[]=new int[10]; for (int i = 0; i < s.length(); i++) { }

for (int i = 0; i < 10; i++) { }

System.out.println(current); return;

if(usedTimes[i]!=avaliableValueUsed[i]){ }

return;

avaliableValueUsed[s.charAt(i)-'0']++;

}else {

usedTimes[0]=size-used;

exhaustion(-1, size, current); usedTimes[0]=0; return;

return;

}

if(arrayIndex>=0){ }

for (int i = 0; i <= size-used; i++) { }

return;//1到9已分配完毕,不可再延伸了

if(current.add(iPowSizeMultiplyj[arrayIndex][i]).compareTo(MAX)>0){ }

usedTimes[arrayIndex]=i; exhaustion(arrayIndex-1, usedTimes[arrayIndex]=0;

return;

used+i,current.add(iPowSizeMultiplyj[arrayIndex][i]));

}else {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in); Question10Think2.size = scanner.nextInt();

long startTime = System.currentTimeMillis(); // 程序开始时间 Question10Think2OptimizeMustRemember.size=21; Question10Think2OptimizeMustRemember.init();

Question10Think2OptimizeMustRemember.exhaustion(9, 0, BigInteger.valueOf(0));

long endTime = System.currentTimeMillis();

// 程序结束时间

System.out.println((endTime-startTime)/1000f+\秒\// 运行总时

// // }

}

运行结果:

128468643043731391252 449177399146038697307

19.062秒

方法二:

/*

* 求21位数的水仙花数 */

import java.math.BigInteger;

public class Demo01_BigInteger { // 求 每个 i 的 21 次方 public static BigInteger p(int i){

BigInteger base = BigInteger.valueOf(i); return base.pow(21); }

public static void ji_suan(BigInteger[] pw,int[] nn){ BigInteger sum = BigInteger.ZERO;

25


蓝桥杯java历年真题及答案整理(共129道题目及答案)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《素质教育专题》第04章在线测试

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: