zoukankan      html  css  js  c++  java
  • 第二届全国高校计算机能力挑战赛-Java程序设计赛

    第二届全国高校计算机能力挑战赛-Java程序设计赛

    2020年第二届全国高校计算机能力挑战赛-Java程序设计赛前15题为选择题。16,17,18,19为编程题。

    16题
    题目:统计从1到N的整数中,所有立方值的平方根为整数的数的个数
    输入说明:整数N(N<10000);
    输出说明:符合条件的数的个数,如43=64=82
    输入样例:10
    输出样例:3
    (说明:样例中符合条件的3个数是1、4、9)

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int res = 0;
            for ( int i = 1; i <= n; i++){
                long li = i*i*i;
                long s = (int) Math.sqrt(li);
                if ( s * s == li )
                    res++;
            }
            System.out.println(res);
            sc.close();
        }
    }
    

    17题
    题目:数组a和b分别记录着球队A和B本赛季N场比赛的净胜球,其中正数为胜利积3分,负数为失败积0分,0为平局积1份,求解A和B的排名先后。如果积分相同则净胜球总数多则排名靠前。如果净胜球总数仍相同,则输出: Draw。
    输入说明:第一行,数组中元素个数N(N<1000);第二行,A的净胜球;第三行,B的净胜球
    输出说明:排名靠前球队(A或B或Draw)
    输入样例:5
    1 0 -1 0 1
    0 6 0 0 -1
    输出样例:A

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int count_a = 0, count_b = 0, score_a = 0, score_b = 0;
            for ( int i = 0; i < n; i++ ) {
                int a = sc.nextInt();
                if ( a > 0 ) {
                    score_a += 3;
                    count_a += a;
                } else if ( a == 0 )
                    score_a += 1;
                else
                    count_a += a;
            }
            for ( int i = 0; i < n; i++ ) {
                int b = sc.nextInt();
                if ( b > 0 ) {
                    score_b += 3;
                    count_b += b;
                } else if ( b == 0 )
                    score_b += 1;
                else
                    count_b += b;
            }
    
            if ( score_a > score_b )
                System.out.println("A");
            else if ( score_a < score_b )
                System.out.println("B");
            else {
                if( count_a > count_b )
                    System.out.println("A");
                else if( count_a < count_b )
                    System.out.println("B");
                else
                    System.out.println("Draw");
            }
            sc.close();
        }
    }
    

    18题
    题目:在一个小写英文字母(a-z)组成的字符串的最短子串,其包含这个字符串中出现过的所有字母。输出最左边的该类子串。
    输入说明:待处理字串(长度≤200)
    输出说明:子串
    输入样例:adfasjdoiasdfa
    输出样例:fasjdoi

    import java.util.HashSet;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            String str = sc.nextLine();
    
            HashSet<Character> hashSet = new HashSet<>();
            for(int i = 0;i < str.length();i++)
                hashSet.add(str.charAt(i));
            int len = hashSet.size();
    
            String res = str;
            HashSet<Character> hashSet_sub = new HashSet<>();
            for(int i = 0;i < str.length()-len+1;i++){
                String sub = str.substring(i, i+len);
                for(int j = 0;j < sub.length();j++)
                    hashSet_sub.add(sub.charAt(j));
    
                if(hashSet.equals(hashSet_sub)){
                    res = sub;
                    break;
                }
                hashSet_sub.clear();
            }
    
            System.out.println(res);
            sc.close();
        }
    }
    

    19题
    题目:某商品有2种不同数量的包装,对应不同的价格;同时提供满200元减50元的不限量购物券,试求解最佳购买策略,在单次购买中以最低总价购买正好500个商品。
    输入说明:两种包装的数量和价格(均为整数)
    输出说明:两种商品各自购买数量(无解则输出:-1)
    输入样例:100 80 200 150
    输出样例:5 0

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int one_count = sc.nextInt();
            int one_price = sc.nextInt();
            int two_count = sc.nextInt();
            int two_price = sc.nextInt();
            int min = 10000, one_res = 0, two_res = 0;
            boolean flag = false;   // 是否有解
            for ( int i = 0; i <= 500/one_count; i++ ) {
                if ( (500-i*one_count) % two_count != 0 )    // 凑不成 500
                    continue;
                int temp = i * one_price + ( 500 - i * one_count ) / two_count * two_price;
                temp = temp - (temp / 200 * 50);      // 不限量 满200减50
                if ( temp < min ) {
                    min = temp;
                    one_res = i;
                    two_res = ( 500 - one_res * one_count ) / two_count;
                    flag = true;
                }
            }
            System.out.println( flag ? String.format("%d %d", one_res, two_res) : -1);
            sc.close();
        }
    }
    
  • 相关阅读:
    Js获取当前日期时间及其它操作
    OpenResty
    Nginx开发从入门到精通
    TengineWeb服务器项目
    VS2012的SVN插件VISUALSVN
    VS项目如何运用svn的忽略列表
    SVN 中trunk、branches、tags都什么意思?
    SVN服务器搭建和使用(一)
    逗号分隔字符串转换为一张表--解决查询in(逗号分隔字符串)出错问题
    判断函数是否存在、判断函数是否存在并执行
  • 原文地址:https://www.cnblogs.com/jiaohuadehulike/p/14294954.html
Copyright © 2011-2022 走看看