杭电OJ 2012—2030、2032、2040、2042、2054、2055题(二)

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

2026题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            String strings = sc_01.nextLine();
            char[] output = new char[strings.length()];
            for (int i = 0; i < strings.length(); i++) {
                if (i == 0) {
                    if (strings.charAt(0) <= 122 && strings.charAt(0) >= 97) {
                        output[0] = (char) (strings.charAt(0) - 32);
                    } else {
                        output[0] = strings.charAt(0);
                    }
                } else {
                    if (strings.charAt(i-1) == 32 && strings.charAt(i) <= 122 && strings.charAt(i) >= 97) {
                        output[i] = (char) (strings.charAt(i) - 32);
                    } else {
                        output[i] = strings.charAt(i);
                    }
                }
            }
            for (int i = 0; i < strings.length(); i++) {
                System.out.print(output[i]);
            }
            System.out.println();
        }
    }
}

2027题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int num = sc_01.nextInt();
        sc_01.nextLine();
        for (int j = 0; j < num; j++) {
            String strings = sc_01.nextLine();
            int[] yuan_yin = new int[5];
            //计算每一个元音的数量
            for (int i = 0; i < strings.length(); i++) {
                char char_vol = strings.charAt(i);
                switch (char_vol) {
                    case 'a':
                        yuan_yin[0]++;
                        break;
                    case 'e':
                        yuan_yin[1]++;
                        break;
                    case 'i':
                        yuan_yin[2]++;
                        break;
                    case 'o':
                        yuan_yin[3]++;
                        break;
                    case 'u':
                        yuan_yin[4]++;
                        break;
                    default:
                        break;
                }
            }
            //对统计结果进行输出
            for (int i = 0; i < yuan_yin.length; i++) {
                switch (i) {
                    case 0:
                        System.out.println("a:" + yuan_yin[0]);
                        break;
                    case 1:
                        System.out.println("e:" + yuan_yin[1]);
                        break;
                    case 2:
                        System.out.println("i:" + yuan_yin[2]);
                        break;
                    case 3:
                        System.out.println("o:" + yuan_yin[3]);
                        break;
                    case 4:
                        System.out.println("u:" + yuan_yin[4]);
                        break;
                    default:
                        break;
                }
            }
            if (j < num - 1) {
                System.out.println();
            } else {

            }
        }
    }
}

2028题:

import java.util.*;
public class Main {
//(1)求最大公约数法:最大公约数*最小公倍数 = 两个数之积。
//(2)使用辗转相除法求 比如:下图为求 2 4 6的最小公倍数,用2 4 6做辗转相除法可得最小公倍数为2*1*2
//    3.而第三种方法为:先求出n个数中最大的那个数max,如果这个数可以整除所有的数,则这是最小公倍数
//    如果不能则令max+1直到找到可以整除所有的数的那个数为止
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int char_num = sc_01.nextInt();
            int[] all_num = new int[char_num];
            for (int i = 0; i < char_num; i++) {
                all_num[i] = sc_01.nextInt();
            }
            int counting = 0;
            //计算最大公约数
            int Max = check(all_num, counting);
            //计算最小公倍数
            int result = lease_multiple(all_num, counting, Max);
            all_num[counting + 1] = result;
            //循环计算两个数的最小公倍数,其中一个是之前两个数的公倍数。
            while (counting < char_num - 2) {
                counting++;
                Max = check(all_num, counting);
                result = lease_multiple(all_num, counting, Max);
                all_num[counting+1] = result;
            }
            System.out.println(result);
        }

    }

    private static int lease_multiple(int[] all_num, int counting, int max) {
        int result = (all_num[counting] / max) * all_num[counting + 1];
        return result;
    }

    private static int check(int[] all_num, int counting) {
        //先找出其中的最小值。
        int min = all_num[counting];
        if (all_num[counting + 1] < min) {
            int tmp = all_num[counting];
            all_num[counting] = all_num[counting + 1];
            all_num[counting + 1] = tmp;
        }
        int flag = 0;
        //反向遍历获取最大公约数。
        for (int i = all_num[counting]; i >= 1; i--) {
            if (all_num[counting] % i == 0 && all_num[counting + 1] % i == 0) {
                flag++;
            }
            if (flag == 1) {
                return i;
            }
        }
        return 1;
    }
}
import java.util.Scanner;
public class Main {
    //(1)求最大公约数法:最大公约数*最小公倍数 = 两个数之积。
//(2)使用辗转相除法求 比如:下图为求 2 4 6的最小公倍数,用2 4 6做辗转相除法可得最小公倍数为2*1*2
//    3.而第三种方法为:先求出n个数中最大的那个数max,如果这个数可以整除所有的数,则这是最小公倍数
//    如果不能则令max+1直到找到可以整除所有的数的那个数为止
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int char_num = sc_01.nextInt();
            int[] all_num = new int[char_num];
            for (int i = 0; i < char_num; i++) {
                all_num[i] = sc_01.nextInt();
            }

            for (int i = 1; i < char_num; i++) {
                if(all_num[i]>all_num[0]){
                    int max  = all_num[0];
                    all_num[0] = all_num[i];
                    all_num[i] = max;
                }
            }
            int least_multiple = all_num[0];
            least_multiple = check_Mul(all_num,least_multiple);
            System.out.println(least_multiple);
        }
    }

    private static int check_Mul(int[] all_num, int least_multiple) {
        while (true){
            int couting =0;
            for(int i = 0;i<all_num.length;i++){
                if(least_multiple % all_num[i] == 0){
                    couting ++;
                }
            }
            if(couting == all_num.length){
                return least_multiple;
            }else{
                least_multiple++;
            }
        }
    }
}

2029题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int char_num = sc_01.nextInt();
        for(int i = 0;i<char_num;i++){
            String test_strings = sc_01.next();
            boolean result = check_huiwen(test_strings);
            if(result){System.out.println("yes");}
            else{
                System.out.println("no");
            }
        }
    }
    private static boolean check_huiwen(String test_strings) {
        for(int i= 0;i<test_strings.length();i++){
            if(test_strings.charAt(i) != test_strings.charAt(test_strings.length()-1-i)){
                return false;
            }
        }
        return true;
    }
}

2030题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int line_num = sc_01.nextInt();
        int couting = 0;
        sc_01.nextLine();
        for (int i = 0; i < line_num; i++) {
            String s1 = sc_01.nextLine();//正常输入流就可以
//  是通过Unicode进行汉字编码的,中文的unicode编码范围是: 在33-126之间的字母。
            //只要>32和<126之内即可。
            //链接:https://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php
            for (int j = 0; j < s1.length(); j++) {
                if ((int) s1.charAt(j) <32 ||((int) s1.charAt(j) >126)){
//                if (((int) s1.charAt(j) >= 0x4E00 && (int) s1.charAt(j) <= 0x9FEF) ||
//                        ((int) s1.charAt(j) >= 0x3400 && (int) s1.charAt(j) <= 0x4DB5) ||
//                        ((int) s1.charAt(j) >= 0x20000 && (int) s1.charAt(j) <= 0x2A6D6) ||
//                        ((int) s1.charAt(j) >= 0x2A700 && (int) s1.charAt(j) <= 0x2B734) ||
//                        ((int) s1.charAt(j) >= 0x2B740 && (int) s1.charAt(j) <= 0x2B81D) ||
//                        ((int) s1.charAt(j) >= 0x2B820 && (int) s1.charAt(j) <= 0x2CEA1) ||
//                        ((int) s1.charAt(j) >= 0x2CEB0 && (int) s1.charAt(j) <= 0x2EBE0) ||
//                        ((int) s1.charAt(j) >= 0x2F00 && (int) s1.charAt(j) <= 0x2FD5) ||
//                        ((int) s1.charAt(j) >= 0x2E80 && (int) s1.charAt(j) <= 0x2EF3) ||
//                        ((int) s1.charAt(j) >= 0xF900 && (int) s1.charAt(j) <= 0xFAD9) ||
//                        ((int) s1.charAt(j) >= 0x2F800 && (int) s1.charAt(j) <= 0x2FA1D) ||
//                        ((int) s1.charAt(j) >= 0xE815 && (int) s1.charAt(j) <= 0xE86F) ||
//                        ((int) s1.charAt(j) >= 0xE400 && (int) s1.charAt(j) <= 0xE5E8) ||
//                        ((int) s1.charAt(j) >= 0xE600 && (int) s1.charAt(j) <= 0xE6CF) ||
//                        ((int) s1.charAt(j) >= 0x31C0 && (int) s1.charAt(j) <= 0x31E3) ||
//                        ((int) s1.charAt(j) >= 0x2FF0 && (int) s1.charAt(j) <= 0x2FFB) ||
//                        ((int) s1.charAt(j) >= 0x3105 && (int) s1.charAt(j) <= 0x312F) ||
//                        ((int) s1.charAt(j) >= 0x31A0 && (int) s1.charAt(j) <= 0x31BA) ||
//                        ((int) s1.charAt(j) == 0x3007)) {
                    couting++;
                }
            }
            System.out.println(couting);
            couting = 0;
        }
    }
}

2032题:

import java.util.*;
public class Main {
   public static void main(String[] args) {
       Scanner sc_01 = new Scanner(System.in);
       while (sc_01.hasNext()) {
           int line_nunm = sc_01.nextInt();
           if (line_nunm == 1) {
               System.out.println("1");
               System.out.println();
           } else if (line_nunm == 2) {
               System.out.println("1");
               System.out.println("1 1");
               System.out.println();
           } else {
               System.out.println("1");
               System.out.println("1 1");
               int[] Inital_val = {1, 1};
               int counting = 2;
               while (counting < line_nunm) {
                   int[] Out_val = new int[Inital_val.length + 1];
                   Out_val[0] = 1;
                   Out_val[Out_val.length - 1] = 1;
                   //计算第i行的值。
                   for (int i = 1; i < Out_val.length - 1; i++) {
                       Out_val[i] = Inital_val[i] + Inital_val[i - 1];
                   }
                   //输出第i行结果
                   for (int i = 0; i < Out_val.length - 1; i++) {
                       System.out.print(Out_val[i] + " ");
                   }
                   System.out.println(Out_val[Out_val.length - 1]);
                   //更新旧Value的值
                   Inital_val = Out_val;
                   counting++;
               }
               System.out.println();
           }
       }
   }
}

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int line_nunm = sc_01.nextInt();
            int[][] a = new int[32][32];
            for (int i = 1; i <= 30; i++) a[i][0] = 1;
            for (int i = 2; i <= 30; i++)
                for (int j = 1; j < i; j++) a[i][j] = a[i - 1][j - 1] + a[i - 1][j];

            for (int i = 1; i <= line_nunm; i++) {
                for (int j = 0; j < i - 1; j++)
                    System.out.print(a[i][j] + " ");
                System.out.println(a[i][i - 1]);
            }
            System.out.println();
        }
    }
}

2040题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int line_num = sc_01.nextInt();
        for(int i= 0;i<line_num;i++){
            int num_01 = sc_01.nextInt();
            int num_02 = sc_01.nextInt();
            int result_01 = 0,result_02 = 0;
            //计算其第一个数的真约数之和
            for(int j=1;j<num_01;j++){
                if(num_01%j==0){
                    result_01+=j;
                }
            }
            //计算第二个数的真约数之和
            for(int j=1;j<num_02;j++){
                if(num_02%j==0){
                    result_02+=j;
                }
            }
            if(num_01==result_02 && num_02 ==result_01){
                System.out.println("YES");
            }else {
                System.out.println("NO");
            }
        }
    }
}

2042题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int line = sc_01.nextInt();
        for(int i =0;i<line;i++){
            int toll_station = sc_01.nextInt();
            int total_goat = 3;
            for(int j = 0;j<toll_station;j++){
                total_goat = (total_goat - 1) *2;
            }
            System.out.println(total_goat);
        }
    }
}

2054题:

import java.math.BigDecimal;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            BigDecimal num_01 = sc_01.nextBigDecimal();//   BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成
            BigDecimal num_02 = sc_01.nextBigDecimal();
            if (num_01.compareTo(num_02) == 0) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }
}

2055题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        int line_num = sc_01.nextInt();
        for (int i = 0; i < line_num; i++) {
            String string_01 = sc_01.next();
            int y = sc_01.nextInt();
            int result = 0;
            if (string_01.charAt(0) >= 'a' && string_01.charAt(0) <= 'z') {
                result = -(string_01.charAt(0) - 96);
            } else if (string_01.charAt(0) >= 'A' && string_01.charAt(0) <= 'Z') {
                result = (string_01.charAt(0) - 64);
            } else {
            }
            result = result + y;
            System.out.println(result);
        }
    }
}

猜你喜欢

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