目录
2103: ICPC
题目描述ICPC是国际大学生程序设计竞赛(International Collegiate Programming Contest)的简称,是全球最具影响力的大学生程序设计竞赛。
小Kimi的目标是长大之后能够参加ICPC全球总决赛(World Final),为此他在努力学习编程。
为了表达对ICPC的热爱,他决定编写一个程序,输入一个正整数N,输出N个连续的ICPC,同时他希望所有位于奇数位置的ICPC全部用大写字母,而偶数位置的ICPC全部用小写字母,即“icpc”。你试试能不能写出来?
输入
单组输入。
输入一个正整数N,N<=100。
输出
输出一行,包含N个连续的“ICPC”,其中奇数位置的ICPC全部用大写字母,而偶数位置的ICPC全部用小写字母。
样例输入 Copy
3
样例输出 Copy
ICPCicpcICPC
代码
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String a="ICPC";
String b=a.toLowerCase();
String c="";
for(int i=1;i<=n;i++){
if(i%2==1){
c+=a;
}
if(i%2==0){
c+=b;
}
}
System.out.println(c);
}
}
2047: 三维迷宫
题目描述
小米同学在MC("我的世界")游戏中用积木块搭建了一个三维迷宫。
在三维迷宫中,X轴对应东西方向(东为正,西为负),Y轴对应南北方向(北为正,南为负),Z轴对应上下方向(上为正,下为负)。
现在小米在游戏中所控制的人物角色的初始坐标位置是(x, y, z),每接收到一个指令字符,角色将朝对应的方向移动一个单位长度。
在游戏中一共包含六个指令字符,“E”表示往东移动,“W”表示往西移动,“S”表示往南移动,“N”表示往北移动,“U”表示往上移动,“D”表示往下移动。
请问在执行一组移动指令后,人物角色的最终位置是多少?请按照X、Y和Z的顺序输出。
输入
单组输入。
第1行输入三个整数x、y和z,表示人物角色的初始坐标位置。其中,-1000<=x,y,z<=1000。两两之间用英文空格隔开。
第2行输入一个由六种字符“E”、“W”、“S”、“N”、“U”和“D”组成的字符串,字符串的长度不超过1000。
输出
输出移动之后人物角色的最终位置,按照X、Y和Z的顺序输出,两两之间用英文空格隔开
样例输入 Copy
0 0 0 EWESNDUS
样例输出 Copy
1 -1 0
代码
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
int y=sc.nextInt();
int z=sc.nextInt();
String a=sc.next();
String b[]=a.split("");
for(int i=0;i<b.length;i++){
if(b[i].equals("E")){
x++;
}
if(b[i].equals("W")){
x--;
}
if(b[i].equals("S")){
y--;
}
if(b[i].equals("N")){
y++;
}
if(b[i].equals("U")){
z++;
}
if(b[i].equals("D")){
z--;
}
}
System.out.println(x+" "+y+" "+z);
}
}
2086: 奖牌榜
题目描述
X星学校的运动会正在激烈进行中。
现在需要请你编写一个程序来显示所有班级的奖牌榜,显示规则如下:
(1) 优先按照金牌数量降序排列后显示。
(2) 如果金牌数相等则比较银牌数,银牌数多者显示在前。
(3) 如果金牌和银牌数都相等,则比较铜牌数,铜牌数多者显示在前。
(4) 如果金、银、铜数量均相等,则按照班级编号从小到大排列后显示。
(5) 需要按照班级编号、金牌数、银牌数、铜牌数、奖牌总数的顺序显示每个班级的奖牌情况。
已知X星学校的班级编号为一个四位正整数,且班级编号具有唯一性。
输入
单组输入。
第1行输入一个正整数N,表示班级的总数量,N<=9000。
接下来N行,每1行包含四个正整数,分别表示班级编号、金牌数、银牌数和铜牌数。金牌数、银牌数和铜牌数均小于100。两两之间用英文空格隔开。
输出
显示按照规则排序之后的奖牌榜,每一行都包含班级编号、金牌数、银牌数、铜牌数和奖牌总数,两两之间用英文空格隔开。
样例输入 Copy
4 1000 4 10 5 1001 5 11 6 1002 4 11 4 1003 4 10 5
样例输出 Copy
1001 5 11 6 22 1002 4 11 4 19 1000 4 10 5 19 1003 4 10 5 19
代码
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[][]=new int[n][4];
for(int i=0;i<n;i++){
for(int j=0;j<4;j++){
a[i][j]=sc.nextInt();
}
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[j][1]>a[i][1]){
int q=a[j][0];
a[j][0]=a[i][0];
a[i][0]=q;
int w=a[j][1];
a[j][1]=a[i][1];
a[i][1]=w;
int e=a[j][2];
a[j][2]=a[i][2];
a[i][2]=e;
int r=a[j][3];
a[j][3]=a[i][3];
a[i][3]=r;
}else if(a[j][1]==a[i][1]){
if(a[j][2]>a[i][2]){
int q=a[j][0];
a[j][0]=a[i][0];
a[i][0]=q;
int w=a[j][1];
a[j][1]=a[i][1];
a[i][1]=w;
int e=a[j][2];
a[j][2]=a[i][2];
a[i][2]=e;
int r=a[j][3];
a[j][3]=a[i][3];
a[i][3]=r;
}else if(a[j][2]==a[i][2]){
if(a[j][3]>a[i][3]){
int q=a[j][0];
a[j][0]=a[i][0];
a[i][0]=q;
int w=a[j][1];
a[j][1]=a[i][1];
a[i][1]=w;
int e=a[j][2];
a[j][2]=a[i][2];
a[i][2]=e;
int r=a[j][3];
a[j][3]=a[i][3];
a[i][3]=r;
}else if(a[j][3]==a[i][3]){
if(a[j][0]<a[i][0]){
int q=a[j][0];
a[j][0]=a[i][0];
a[i][0]=q;
int w=a[j][1];
a[j][1]=a[i][1];
a[i][1]=w;
int e=a[j][2];
a[j][2]=a[i][2];
a[i][2]=e;
int r=a[j][3];
a[j][3]=a[i][3];
a[i][3]=r;
}
}
}
}
}
}
int sum[]=new int[n];
for(int i=0;i<n;i++){
sum[i]=a[i][1]+a[i][2]+a[i][3];
}
for(int i=0;i<n;i++){
for(int j=0;j<4;j++){
System.out.print(a[i][j]+" ");
}
System.out.print(sum[i]);
System.out.println("");
}
}
}
可以将交换位置的代码写成一个方法,在主函数中调用,这样代码不会显得那么多,而且容易看懂!