zoukankan      html  css  js  c++  java
  • 第十届蓝桥杯Java B组

    试题B

    答案:100

    注意Java的substring的两个参数为起始的下标和结尾的下标+1,所以j = i + 1防止出现空字符串

    import java.math.*;
    import java.util.*;
    
    public class Main{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s = "0100110001010001";
            int len = s.length();
            Set<String> se = new HashSet<>();
            for(int i = 0; i < len; i++)
            {
                for(int j = i + 1; j <= len; j++)
                {
                    String tmp = s.substring(i, j);
                    se.add(tmp);
                }
            }
            System.out.println(se.size());
        }
    }

    试题C

    答案:4659

    import java.math.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int[] a = new int[30000000];
            a[1] = 1; a[2] = 1; a[3] = 1;
            for(int i = 4; i <= 20190324; i++)
            {
                a[i] = ((a[i-1] + a[i-2])%10000 + a[i-3])%10000;
            }
            System.out.println(a[20190324]);
        }
    }

    试题D

    答案:40785

    import java.math.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int ans = 0;
            for(int i = 1; i <= 2019; i++)
            {
                for(int j = i + 1; j <= 2019; j++)
                {
                    for(int k = j + 1; k <= 2019; k++)
                    if(check(i) && check(j) && check(k) && (i + j + k) == 2019) 
                        ans++;
                }
            }
            System.out.println(ans);
        }
        public static boolean check(int x)
        {
            while(x > 0)
            {
                if(x % 10 == 2 || x % 10 == 4) return false;
                x /= 10;
            }
            return true;
        }
    } 

    试题E

    答案

    DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR

    import java.math.*;
    import java.util.*;
    
    class node
    {
        int x,y;
        String ans;
        node(int x,int y, String ans)
        {
            this.x = x;
            this.y = y;
            this.ans = ans;
        }
    }
    
    public class Main{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s = "01010101001011001001010110010110100100001000101010"
                    + "00001000100000101010010000100000001001100110100101"
                    + "01111011010010001000001101001011100011000000010000"
                    + "01000000001010100011010000101000001010101011001011"
                    + "00011111000000101000010010100010100000101100000000"
                    + "11001000110101000010101100011010011010101011110111"
                    + "00011011010101001001001010000001000101001110000000"
                    + "10100000101000100110101010111110011000010000111010"
                    + "00111000001010100001100010000001000101001100001001"
                    + "11000110100001110010001001010101010101010001101000"
                    + "00010000100100000101001010101110100010101010000101"
                    + "11100100101001001000010000010101010100100100010100"
                    + "00000010000000101011001111010001100000101010100011"
                    + "10101010011100001000011000010110011110110100001000"
                    + "10101010100001101010100101000010100000111011101001"
                    + "10000000101100010000101100101101001011100000000100"
                    + "10101001000000010100100001000100000100011110101001"
                    + "00101001010101101001010100011010101101110000110101"
                    + "11001010000100001100000010100101000001000111000010"
                    + "00001000110000110101101000000100101001001000011101"
                    + "10100101000101000000001110110010110101101010100001"
                    + "00101000010000110101010000100010001001000100010101"
                    + "10100001000110010001000010101001010101011111010010"
                    + "00000100101000000110010100101001000001000000000010"
                    + "11010000001001110111001001000011101001011011101000"
                    + "00000110100010001000100000001000011101000000110011"
                    + "10101000101000100010001111100010101001010000001000"
                    + "10000010100101001010110000000100101010001011101000"
                    + "00111100001000010000000110111000000001000000001011"
                    + "10000001100111010111010001000110111010101101111000";
            int[][] a = new int[30][50];
            int[][] vis = new int[30][50];
            int len = s.length();
            for(int i = 0; i < len; i++)
            {
                a[i/50][i%50] = s.charAt(i) - '0';
            }
            String ans = "";
            int x = 0, y = 0;
            vis[0][0] = 1;
            int[][] k = {{1, 0}, {0, -1}, {0, 1}, {-1, 0}};
            node tmp = new node(0, 0 , "");
            Queue<node> q= new LinkedList<>();
            q.offer(tmp);
            while(!q.isEmpty())
            {
                node t = q.poll();
                if(t.x == 29 && t.y == 49)
                {
                    System.out.println(t.ans);
                    break;
                }
                for(int i = 0; i <= 3; i++)
                {
                    int tmpx = t.x + k[i][0], tmpy = t.y + k[i][1];
                    if(tmpx >= 0 && tmpx < 30 && tmpy >= 0 && tmpy < 50 && vis[tmpx][tmpy] == 0 && a[tmpx][tmpy] == 0)
                    {
                        vis[tmpx][tmpy] = 1;
                        String st = t.ans;
                        if(i == 0) st += 'D';
                        if(i == 1) st += 'L';
                        if(i == 2) st += 'R';
                        if(i == 3) st += 'U';
                        node t2 = new node(tmpx, tmpy, st);
                        q.offer(t2);
                    }
                }
            }
        }
    } 

    试题F

    import java.math.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int ans = 0;
            for(int i = 1; i <= n; i++)
            {
                if(check(i)) ans += i;
            }
            System.out.println(ans);
        }
        public static boolean check(int x)
        {
            while(x > 0)
            {
                if(x % 10 == 2 || x % 10 == 0 || x % 10 == 1 || x % 10 == 9) 
                    return true;
                x /= 10;
            }
            return false;
        }
    } 

    试题G

    import java.math.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Map<Integer, List<Integer>> mp = new HashMap<>();
            int n = sc.nextInt();
            int m = sc.nextInt();
            int t = sc.nextInt();
            int[] sum = new int[n+1];
            int[] cnt = new int[n+1];
            for(int i = 0; i < m; i++)
            {
                int tmpt = sc.nextInt();
                int tmpid = sc.nextInt();
                if(mp.get(tmpt) == null)
                {
                    List<Integer> tmpl = new ArrayList<>();
                    tmpl.add(tmpid);
                    mp.put(tmpt, tmpl);
                }
                else 
                    mp.get(tmpt).add(tmpid);
            }
            int last = 0, ans = 0;
            for(Integer key : mp.keySet())
            {
                int key1 = key;
                List<Integer> tmpL = mp.get(key1);
                int[] vis = new int[n+1];
                int timespan = key1 - last;
                for(int j : tmpL) vis[j] += 1;
                for(int j = 1; j <= n; j++)
                {
                    if(vis[j] > 0) sum[j] += 2 * vis[j];
                    else sum[j] = sum[j] - timespan < 0 ? 0 : sum[j] - timespan;
                    if(sum[j] > 5)
                        cnt[j] = 1;
                    else if(sum[j] <= 3)
                        cnt[j] = 0;
                }
                last = key1;
            }
            for(int i = 1; i <= n; i++)
            {
                int timespan = t - last;
                sum[i] = sum[i] - timespan < 0 ? 0 : sum[i] - timespan;
                if(sum[i] <= 3)
                    cnt[i] = 0;
            }
            for(int i = 1; i <= n; i++)
            {
                if(cnt[i] == 1)
                    ans++;
            }
            System.out.println(ans);
        }
    } 

    试题H

    import java.math.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int K = sc.nextInt();
            sc.nextLine();
            String s = sc.nextLine();
            String[] word = s.split("\s+|\.");
            int len = word.length;
            int ans = 0;
            for(int i = 0; i < len; i++)
            {
                if(word[i].equals("Alice"))
                {
                    for(int j = i + 1; j < len; j++)
                    {
                        if(word[j].equals("Bob"))
                        {
                            int L = 1;
                            for(int k = i + 1; k < j; k++) 
                                L += (1 + word[k].length());
                            if(L <= K) ans++;
                        }
                    }
                }
            }
            for(int i = 0; i < len; i++)
            {
                if(word[i].equals("Bob"))
                {
                    for(int j = i + 1; j < len; j++)
                    {
                        if(word[j].equals("Alice"))
                        {
                            int L = 1;
                            for(int k = i + 1; k < j; k++)
                                L += (1 + word[k].length());
                            if(L <= K) ans++;
                        }
                    }
                }
            }
            System.out.println(ans);
        }
    } 
  • 相关阅读:
    C++中的类模板详细讲述
    函数模板和模板函数
    vs2008 快捷键大全
    #宏定义##
    多工程项目设置
    conemu 配置
    itcast-svn
    itcast-spring-三大框架整合
    Spring通知方法错误
    动态代理
  • 原文地址:https://www.cnblogs.com/benzikun/p/14621485.html
Copyright © 2011-2022 走看看