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 {