蓝桥杯算法提高题与官方答案(4)

2019-03-09 13:45

1 a 样例输出 Sample 1 ebcda edcba edcba Sample 2 a

参考代码:

import java.util.Scanner;

public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] string=scanner.nextLine().split(\ char[] arr = new char[Integer.valueOf(string[0])]; arr = string[1].toCharArray(); aa(arr, 0); } private static void aa(char[] arr, int ii) { if (ii >= arr.length - 1 - ii) { System.out.println(); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); } return; } else { char c = arr[ii]; arr[ii] = arr[arr.length - 1 - ii]; arr[arr.length - 1 - ii] = c; for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); } System.out.println(); aa(arr, ii + 1); } } }

编号: ADV-10

题目:立方体截断问题

关键字:

类型:VIP试题 问题描述:

如右图所示,这是一个空心正方体(请想象用纸糊出来的正方体),每条棱的编号如图所示 (图在http://166.111.138.150/fop/attach/cube.jpg)。

考虑剪开若干条棱,请判断正方体是否会被剪成分开(即判断正方体是否会被分割成不少于2个部分)。 输入格式

本题包括多组数据。

第一行输入一个N,表示数据组数。 对于每一组数据,都包括两行。

第一行输入一个n,表示总共剪开了n条棱。

第二行有n个数,每个数表示剪开的棱的编号。(输入保证每条棱出现次数不超过1) 输出格式

对于每一组输入,输出一行。

若正方体会被分割成不少于2个部分,则输出“Yes”,否则输出“No”(均不包括引号)。 样例输入 5 4

1 2 3 4 6

1 2 5 7 11 12 3 1 4 5 6

1 3 4 5 9 12 12

1 2 3 4 5 6 7 8 9 10 11 12

样例输出 Yes Yes No No Yes

参考代码:

该题暂时没有人完全正确,暂时没有该语言的参考程序。

编号:ADV-11

题目:Torry的困惑(提高型) 关键字:循环 数学知识 类型:vip试题 问题描述:

Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7??这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000??个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。 输入格式

仅包含一个正整数n,其中n<=100000。 输出格式

输出一行,即前n个质数的乘积模50000的值。 样例输入 1 样例输出 2

参考代码:

import java.util.*; public class Main{

public static void main(String args[]){

Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); long sum=1;

boolean b[]=new boolean[2000000]; int a[]=new int [200001]; for(int i=2;i<2000000;i++){ if(!b[i])

for(int j=i+i;j<2000000;j+=i){ b[j]=true;

} }

int count=0;

for(int i=2;i<2000000;i++){ if(!b[i]){

sum=sum*iP000; count++; if(count==n){ System.out.println(sum); break; } } }

} }

编号:ADV-12 题目:计算时间 关键字:循环 类型:vip试题 问题描述

给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位数,如果小于10用0补到两位。 输入格式

第一行一个数T(1<=T<=100,000),表示数据组数。后面每组数据读入一个数t,0<=t<24*60*60。 输出格式

每组数据一行,HH:MM:SS。 样例输入 2 0

86399 样例输出 00:00:00 23:59:59

参考代码: import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] arr = new int[n]; for (int i = 0; i < arr.length; i++) { arr[i] = Integer.parseInt(br.readLine()); } func(arr); } public static void func(int[] arr) { for (int i = 0; i < arr.length; i++) { int h = arr[i] / 3600; int m = (arr[i] - h * 3600) / 60; int t = arr[i] - h * 3600 - m * 60; System.out.println((h > 9 ? h : (\

+ (m > 9 ? m : (\ } } }

编号:ADV-13

题目:最小乘积(提高型) 关键字:算法 类型:vip试题 问题描述

给两组数,各n个。

请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。

例如两组数分别为:1 3 -5和-2 4 1

那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25 输入格式

第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。 n<=1000,T<=10 输出格式

一个数表示答案。 样例输入 2 3 1 3 -5 -2 4 1 5

1 2 3 4 5 1 0 1 0 1 样例输出 -25 6

参考代码:

import java.io.BufferedReader; import java.io.IOException;

import java.io.InputStreamReader; import java.io.StreamTokenizer; import java.util.LinkedList; import java.util.PriorityQueue; public class Main {


蓝桥杯算法提高题与官方答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:英语名篇背诵手册+中英对照

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

马上注册会员

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