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

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

2012题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int num_begin = sc_01.nextInt();
            int num_end = sc_01.nextInt();
            boolean result01 = false;
            int flag = 0;//设置标志位
            if (num_begin == 0 && num_end == 0) break;
            else {
                for (int count = num_begin; count <= num_end; count++) {
                    int result = (int) (Math.pow(count, 2)) + count + 41;
                    result01 = jianchasushu(result);
                    if(result01 == true){//说明是没有素数的。
                        flag = 1;
                    }
                }
            }
            if(flag==1){
                System.out.println("Sorry");
            }else{
                System.out.println("OK");
            }
        }
    }
    //原来大家方法都差不多,感觉有时候不能想什么是权威?
    // 什么是标准?能解决问题自然是权威,自然是标准,都是人定的
    private static boolean jianchasushu(int result) {
        for(int i = 2;i<=(Math.pow(result,1.0/2)+1);i++){
            if(result%i==0){
                return true;
            }
        }
        return false;
    }
}

2013题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        //最后一天是第几天。
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int day = sc_01.nextInt();
            int All_Peach = 1;
            for (int i = 1; i < day; i++)
                All_Peach = (All_Peach+1)*2;
            System.out.println(All_Peach);
        }
    }
}

2014题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int rater_num = sc_01.nextInt();
            int[] score = new int[rater_num];
            for (int i = 0; i < score.length; i++) {
                score[i] = sc_01.nextInt();
            }
            //去掉最低分。
            score = removeMin(score);
            //去掉最高分。
            score = removeMax(score);
            int result = 0;
            for (int i = 0; i < score.length; i++) {
//                if (score[i] != -1)
                    result += score[i];
            }
            System.out.println(String.format("%.2f",(double)result/(score.length)));
        }
    }
    private static int[] removeMax(int[] score) {
        int max = score[0];
        int flag = 0;
        for (int i = 1; i < score.length; i++) {
            if (score[i] > max) {
                max = score[i];
                flag = i;
            }
        }
        score[flag] = score[score.length-1];
        score = Arrays.copyOf(score,score.length-1);
//        score[flag] = -1;
        return score;
    }
    private static int[] removeMin(int[] score) {
        int min = score[0];
        int flag = 0;
        for (int i = 1; i < score.length; i++) {
            if (score[i] < min) {
                min = score[i];
                flag = i;
            }
        }
//        score[flag] = -1;
        //对数组进行缩容
        score[flag] = score[score.length-1];
        score = Arrays.copyOf(score,score.length-1);
        return score;
    }
}

2015题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int num_01 = sc_01.nextInt();//数字的个数
            int cha_ju = sc_01.nextInt();//几个数字的均值。
            int[] allnum = new int[num_01];//所有数字
            for (int i = 0; i < num_01; i++) {
                allnum[i] = 2 * (i + 1);
            }
            for (int i = 0; i < num_01; i = i + cha_ju) {
                int result = 0;
                int counting =0,j=0;
                //计算所有项之和。
                for (j = i; j < i + cha_ju; j++) {
                    if (j >= allnum.length) {//对后续不进行处理。
                    } else {
                        result += allnum[j];
                        counting++;//每一列到底有多少数
                    }
                }
                //对其求均值
                if(j<allnum.length){
                    System.out.print(result/counting+" ");
                }else{
                    System.out.println(result/counting);
                }
            }
        }
    }
}

2016题:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int count_num = sc_01.nextInt();
            int[] num_array = new int[count_num];
            if (count_num == 0) {
                break;
            } else {
                //输入数组所有元素
                for (int i = 0; i < count_num; i++) {
                    num_array[i] = sc_01.nextInt();
                }
                int min = num_array[0], flag = 0, tmp;
                //获取最小元素的下标
                for (int i = 1; i < count_num; i++) {
                    if (num_array[i] < min) {
                        //是不是傻啊,不对最小值进行更新。
                        min = num_array[i];
                        flag = i;
                    }
                }
                //将两者进行交换
                tmp = num_array[0];
                num_array[0] = num_array[flag];
                num_array[flag] = tmp;
                //输出最终排序结果
                for (int i = 0; i < count_num; i++) {
                    if(i<count_num-1){
                        System.out.print(num_array[i]+" ");
                    }else{
                        System.out.println(num_array[i]);
                    }
                }
            }
        }
    }
}

2017题:

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 counting = 0;
            for (int j = 0; j < string_01.length(); j++) {
                if (string_01.charAt(j) >= '0' && string_01.charAt(j) <= '9')
                    counting++;
            }
            System.out.println(counting);
        }
    }
}

2018题:

import java.util.*;
public class Main {
   public static void main(String[] args) {
       Scanner sc_01 = new Scanner(System.in);
       while (sc_01.hasNext()) {
           int num_01 = sc_01.nextInt();//多少天
           if (num_01 == 0) {
               break;
           } else {
               int cow_today = 0;
               ArrayList<Integer> arr_01 = new ArrayList<Integer>();
               //先把所有数组进行填充,填充至length长度
               for (int i = 1; i <= num_01; i++) {
                   if (i <= 4) {
                       arr_01.add(1);
                   } else {
                       for (int j = 0; j < i - 3; j++) {
                           cow_today += arr_01.get(j);
                       }
                       arr_01.add(cow_today);
                       cow_today = 0;
                   }
               }
               //计算所有总牛数并输出。
               int cow_all = 0;
               if (num_01 <= 4) {
                   System.out.println(num_01);
               } else {
                   for (int i = 0; i < num_01 ; i++) {
                       cow_all += arr_01.get(i);
                   }
                   System.out.println(cow_all);
               }
           }
       }

   }
}
//更为简单的
import java.util.*;
public class Main {

    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int num_01 = sc_01.nextInt();//多少天
            if (num_01 == 0) break;
            else {
                int result = countingPigs(num_01);
                System.out.println(result);
            }
        }
    }

    private static int countingPigs(int num_01) {
        if (num_01 <= 4) return num_01;
        else {
            return countingPigs(num_01 - 1) + countingPigs(num_01 - 3);
        }
    }
}

2019题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        //以后麻烦用Arraylist存,这样很low,谢谢。
        while (sc_01.hasNext()){
            int num_coun = sc_01.nextInt();
            int Insert_num = sc_01.nextInt();
            int []num = new int[num_coun];
            int flag = 0;
            if(num_coun == 0 && Insert_num ==0){break;}
            else {
                for(int i = 0;i<num_coun;i++){
                    num[i] = sc_01.nextInt();
                    if(Insert_num>=num[i]){
                        flag = i;
                    }
                }
                for(int i = 0;i<num_coun-1;i++){
                    if(i!=flag){
                        System.out.print(num[i]+" ");
                    }else{
                        System.out.print(num[i]+" ");
                        System.out.print(Insert_num+" ");
                    }
                }
                if(flag!=(num_coun-1)) {
                    System.out.println(num[num_coun - 1]);
                }else{
                    System.out.println(Insert_num);
                } }
        }
    }
}

2020题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int num_count = sc_01.nextInt();
            int[] num_all = new int[num_count];
            if (num_count != 0) {
                //输入所有int类型数组
                for (int i = 0; i < num_count; i++) {
                    num_all[i] = sc_01.nextInt();
                }
                //对所有数组进行排序,每次都拿最大绝对值的数字。
                //冒泡、快速、插入、希尔、归并、堆排序。
                for (int i = 0; i < num_count; i++) {
                    int max ;//将最大值定为第i个
                    for(int j = i;j<num_count;j++){//进行最大值的计算。
                        if(Math.abs(num_all[j])>Math.abs(num_all[i])){
                            max = num_all[i];//每次进行更新。
                            num_all[i] = num_all[j];
                            num_all[j] = max;
                        }
                    }
                }
                //对所有数组进行输出
                for (int i = 0; i < num_count; i++) {
                    if (i < num_count - 1) {
                        System.out.print(num_all[i] + " ");
                    } else {
                        System.out.println(num_all[i]);
                    }
                }
            } else {
                break;
            }
        }
    }
}

2021题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int teach_num = sc_01.nextInt();
            int[] Payer = new int[teach_num];
            if (teach_num != 0) {
                //输入所有老师的个数和老师的工资。
                for (int i = 0; i < teach_num; i++) {
                    Payer[i] = sc_01.nextInt();
                }
                int result = 0;
                //输入面币种类
                int[] Money = {100, 50, 10, 5, 2, 1};
                for(int i = 0;i<teach_num;i++){
                   for(int j = 0;j<Money.length;j++){
                       result+=(Payer[i]/Money[j]);
                       //对result进行累加。
                       Payer[i] = Payer[i]%Money[j];
                       //每次更新Payer[i]
                   }
                }
                System.out.println(result);
            } else {
                break;
            }
        }
    }
}

2022题:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc_01 = new Scanner(System.in);
        while (sc_01.hasNext()) {
            int line_num = sc_01.nextInt();//行数
            int column_num = sc_01.nextInt();//列数
            //输入所有行列的值
            int[][] all_num = new int[line_num][column_num];
            for (int i = 0; i < line_num; i++) {
                for (int j = 0; j < column_num; j++) {
                    all_num[i][j] = sc_01.nextInt();
                }
            }
            //记录绝对值最大的值
            int max = Math.abs(all_num[0][0]), flag_line = 0, flag_column = 0;
            //反向遍历,从最后一个逐列逐行反着去读,若小于等于,则更新。
            for (int i = line_num - 1; i >= 0; i--) {
                for (int j = column_num - 1; j >= 0; j--) {
                    if (max <= Math.abs(all_num[i][j])) {
                        max = Math.abs(all_num[i][j]);
                        flag_line = i;
                        flag_column = j;
                    }
                }
            }
            System.out.print((flag_line+1)+" "+(flag_column+1)+" ");
            System.out.println(all_num[flag_line][flag_column]);
        }
    }
}

2023题:

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_num = sc_01.nextInt();
            int conlmn_num = sc_01.nextInt();
            int [][]all_num = new int[line_num][conlmn_num];
            int []line_ave = new int[line_num];
            int []column_ave = new int[conlmn_num];
            //输入所有成绩
            for(int i = 0;i<line_num;i++) {
                for (int j = 0; j < conlmn_num; j++) {
                    all_num[i][j] = sc_01.nextInt();
                }
            }
            //输入并计算所有学生的成绩总和
            for(int i = 0;i<line_num;i++){
                for(int j= 0;j<conlmn_num;j++){
                    line_ave[i] += all_num[i][j];
                }
                //输出每个学生的平均成绩
                if(i<line_num-1){
                    System.out.print(String.format("%.2f",(double)(line_ave[i])/conlmn_num)+" ");
                }else{
                    System.out.println(String.format("%.2f",(double)(line_ave[i])/conlmn_num));
                }
            }
            //计算该门课的所有成绩。
            for(int i = 0;i<conlmn_num;i++){
                for(int j= 0;j<line_num;j++){
                    column_ave[i]+=all_num[j][i];
                }
                if(i<conlmn_num-1){
                    System.out.print(String.format("%.2f",(double)(column_ave[i])/line_num)+" ");
                }else{
                    System.out.println(String.format("%.2f",(double)(column_ave[i])/line_num));
                }
            }
            int counting =0;
            boolean flag = true;
            //计算大于所有平均成绩的学生
            for(int i = 0;i<line_num;i++){
                for(int j= 0;j<conlmn_num;j++){
                    if(all_num[i][j]<(double)(column_ave[j])/line_num){
                        flag =false;
                    }
                }
                if(flag) counting++;
                flag =true;
            }
            System.out.println(counting);
            System.out.println();
        }
    }
}

2024题:

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();
        sc_01.nextLine();
        for (int i = 0; i < line_num; i++) {
            String strings = sc_01.nextLine();
            boolean result = checkString(strings);
            if (result) {
                System.out.println("yes");
            } else {
                System.out.println("no");
            }
        }
    }
    //    C语言中规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
    private static boolean checkString(String strings) {
        for (int i = 0; i < strings.length(); i++) {
            if (i == 0) {
                if (strings.charAt(0) < 65 || (strings.charAt(0) > 90 && strings.charAt(0) < 95)
                        || (strings.charAt(0) > 95 && strings.charAt(0) < 97) || strings.charAt(0) > 122) {
                    return false;
                }
            } else {
                if (strings.charAt(i) < 48 || (strings.charAt(i) > 57 && strings.charAt(i) < 65) || (strings.charAt(i) > 90 && strings.charAt(i) < 95)
                        || (strings.charAt(i) > 95 && strings.charAt(i) < 97) || strings.charAt(i) > 122) {
                    return false;
                }
            }
        }
        return true;
    }
}

2025题:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        // write your code here
        Scanner sc_01= new Scanner(System.in);
        while (sc_01.hasNext()){
            String strings = sc_01.next();
            int max = strings.charAt(0);
            //获取字符串的Max值
            for(int i = 0;i<strings.length();i++){
                if(strings.charAt(i)>max){
                    max = strings.charAt(i);
                }
            }
            //输出max
            String outputstring=new String();
            for(int i = 0;i<strings.length();i++){
                outputstring+=strings.charAt(i);
                if(strings.charAt(i)==max){
                    outputstring+="(max)";
                }
            }
            System.out.println(outputstring);
        }
    }
    }

猜你喜欢

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