2103: ICPC && 2047: 三维迷宫 && 2086: 奖牌榜

目录

2103: ICPC

2047: 三维迷宫

2086: 奖牌榜


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("");
    }
    }
}
 

可以将交换位置的代码写成一个方法,在主函数中调用,这样代码不会显得那么多,而且容易看懂!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值