杭电OJ 1720、1062、2104、1064、2734、1170、1197、2629题

安卓开发及安全交流QQ群:838650234,感兴趣的可以加群。

最大的感受就是杭电OJ类型检查真严格,需要多写代码练手。

1720题:

import java.util.Scanner;
public class Main {
    //注意自己找API
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while(sc_01.hasNext()){
            String num_1 = sc_01.next();
            String num_2 = sc_01.next();
            int num_01 = Integer.parseInt(num_1,16);
            int num_02 = Integer.parseInt(num_2,16);
            System.out.println(num_01+num_02);
        }
    }
}

1062题:

自己写的:

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
//        while (sc_01.hasNext() && sc_02.hasNext()) {
        //使用一个对象无法同时初始化nextInt()和nextLine();
        int line = sc_01.nextInt();
        sc_01.nextLine();
        //输出的字符串
        //***nextLine()可以输入带空格字符串,next()不可以。
        String[] old_String = new String[line];
        String[] result = new String[line];
        //输入字符串
        for (int i = 0; i < line; i++) {
            old_String[i] = sc_01.nextLine();
        }
        for (int i = 0; i < line; i++) {
            //使用Split对字符串进行切割。
            String[] split = old_String[i].split(" ");
            result[i] = new String();
            for (int j = 0; j < split.length - 1; j++) {
                //对字符串做分割
                split[j] = reverse(split[j]);
                result[i] += (split[j] + " ");
            }
            result[i] += (reverse(split[split.length - 1]));
            int num_02 = old_String.length-result[i].length();
            for(int j = 0;j<num_02;j++){
                result[i]+=" ";
            }
        }
        for (int i = 0; i < line; i++) {
            System.out.println(result[i]);
        }
    }
    private static String reverse(String s) {
        String backString = new String();//不要使用null来初始化,使用new String来初始化。
        if (s.equals(" ")) {
            return " ";
        } else {
            for (int i = s.length() - 1; i >= 0; i--) {
                backString += String.valueOf(s.charAt(i));
            }
            return backString;
        }
    }
}

一直显示PE,别人的代码:

import java.util.*;

public class acm1062 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int num = input.nextInt();
        input.nextLine();

        String[] string = new String[num];
        for (int i = 0; i < num; i++) {
            string[i] = input.nextLine();
        }

        String[] result = new String[num];
        for (int i = 0; i < num; i++) {

            String[] str = string[i].split(" ");    //分割字符串

            result[i] = stringReverse(str[0]);
            for (int j = 1; j < str.length; j++) {
                result[i] = result[i] + " " + stringReverse(str[j]);
            }

            //末尾空格加上
            int n = string[i].length() - result[i].length();
            for (int j = 0; j < n; j++) {
                result[i] += " ";
            }

        }

        for (int i = 0; i < num; i++) {
            System.out.println(result[i]);
        }
    }

    //翻转单词字母
    public static String stringReverse(String str) {

        if (str.equals("")) {
            return "";
        } else {
            String string = String.valueOf(str.charAt(str.length() - 1));
            for (int i = str.length() - 2; i >= 0; i--) {
                string += String.valueOf(str.charAt(i));

            }

            return string;
        }
    }
}


2104题:


import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int People_num = sc_01.nextInt();//初始人数
            int Initia_val = sc_01.nextInt();//间隔数
            //如果输入均为-1的话。则退出,else
            if (People_num == -1 && Initia_val == -1) {
                break;
            } else {
                //判断两者的最大公约数是不是等于1
                int test_result = gcd(People_num, Initia_val);
                if (test_result == 1) {
                    System.out.println("YES");
                } else {
                    System.out.println("POOR Haha");
                }
            }
        }
    }
    private static int gcd(int people_num, int initia_val) {
        if(initia_val == 0){
            return people_num;
        }else{
            return gcd(initia_val,people_num%initia_val);
        }
    }}

1064题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int month = 12;
            double[] monthvalue = new double[month];
            double totalResult= 0;
            for (int i = 0; i < month; i++) {
               monthvalue[i] = sc_01.nextDouble();
               totalResult +=monthvalue[i];
            }
            double aver_val = totalResult/12.0;
            System.out.println("$"+String.format("%.2f",aver_val));
        }
    }
}

2734题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            String newString = sc_01.nextLine();
            int result = 0;
            if (!newString.equals("#")) {
                int[] bytesString = new int[newString.length()];
                for (int i = 0; i < bytesString.length; i++) {
                    bytesString[i] = newString.charAt(i);
                    if(bytesString[i] > 96){
                        bytesString[i] -= 96;
                    }else if(bytesString[i] == 32){
                        bytesString[i] = 0;
                    }else{
                        bytesString[i]-=64;
                    }
                    result+=(bytesString[i]*(i+1));
                }
                System.out.println(result);
            } else {
                break;
            }
        }
    }
}

1170题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
//        Scanner sc_02 = new Scanner(System.in);
        //杭电OJf***k,只能有一个输入,不能有两次初始化,谢谢。
        int line_num = sc_01.nextInt();
        sc_01.nextLine();
        for (int i = 0; i < line_num; i++) {
            String test_str = sc_01.nextLine();
            String[] test_cahr = test_str.split(" ");
            int lefft_op = Integer.parseInt(test_cahr[1]);
            int right_op = Integer.parseInt(test_cahr[2]);
            if (test_cahr[0].equals("+")) {
                System.out.println(lefft_op + right_op);
            } else if (test_cahr[0].equals("-")) {
                System.out.println(lefft_op - right_op);
            } else if (test_cahr[0].equals("*")) {
                System.out.println(lefft_op * right_op);
            } else {
                if (lefft_op % right_op == 0) {
                    System.out.println(lefft_op / right_op);
                } else {
                    System.out.println(String.format("%.2f", (double) lefft_op / right_op));
                }
            }
        }
    }
}

1197题:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        for(int num = 2991;num<10000;num++){
            //计算十进制下的和。
            int result_10 = num/1000+num%1000/100+num%1000%100/10+num%1000%100%10;
            //将十进制转成十六进制。
            String result_01 = Integer.toHexString(num);
            //计算十六进制的和
            int result_16 = 0;
            for(int i = 0 ;i<result_01.length();i++){
                //获得该位数的值
                switch(String.valueOf(result_01.charAt(i))){
                    case "a":
                        result_16 += 10;break;
                    case "b":
                        result_16 += 11;break;
                    case "c":
                        result_16 += 12;break;
                    case "d":
                        result_16 += 13;break;
                    case "e":
                        result_16 += 14;break;
                    case "f":
                        result_16 += 15;break;
                    default:
                        result_16 += Integer.parseInt(String.valueOf(result_01.charAt(i)));
                        break;
                }
            }
            //十二进制的字符串
            int result_12 = num/1728+num%1728/144+num%1728%144/12+num%1728%144%12;
            //判断结果输出。
            if(result_10 == result_12&& result_10 == result_16){
                System.out.println(num);
            }
        }
    }
}

2629题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int lin_num = sc_01.nextInt();
        for (int i = 0; i < lin_num; i++) {
            //输入用户身份证ID。
            String Cer_ID = sc_01.next();
            int region_ID = Integer.parseInt(Cer_ID.substring(0, 2));
//            int year_ID = Integer.parseInt(Cer_ID.substring(6, 10));
//            int month_ID = Integer.parseInt(Cer_ID.substring(10, 12));
//            int day_ID = Integer.parseInt(Cer_ID.substring(12, 14));
            String result1 = new String();
            switch (region_ID) {
                case 33:
                    result1 = "Zhejiang";
                    break;
                case 11:
                    result1 = "Beijing";
                    break;
                case 71:
                    result1 = "Taiwan";
                    break;
                case 81:
                    result1 = "Hong Kong";
                    break;
                case 82:
                    result1 = "Macao";
                    break;
                case 54:
                    result1 = "Tibet";
                    break;
                case 21:
                    result1 = "Liaoning";
                    break;
                case 31:
                    result1 = "Shanghai";
                    break;
            }
            //杭电OJ输出检查太严格了吧,如果是截取字符串就是对的,如果是截取的字符串转成int类型输出就报错,
            System.out.println("He/She is from "+result1 + ",and his/her birthday is on " +
                    Cer_ID.substring(10, 12) + "," + Cer_ID.substring(12, 14) + "," + Cer_ID.substring(6, 10) + " based on the table.");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38244174/article/details/81811559