蓝桥杯2020大学B组省赛

1.门派制作

蓝桥杯2020大学B组省赛_第1张图片 

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
       int n=2020;
       int count=0;
       while(n!=0){
         int t=n;
         while(t!=0){
           if(t%10==2) count++;
           t/=10;
         }
         n--;
       }
       System.out.println(count);
        scan.close();
    }
}

答案:624 

 2.既约分数

蓝桥杯2020大学B组省赛_第2张图片

 

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        int count=0;
        for(int i=1;i<=2020;i++){
            for(int j=1;j<=2020;j++){
                if(1==gcd(i,j)) count++;
            }
        }
        System.out.println(count);
    }
    public static int gcd(int i,int j){
        if(i%j==0) return j;
        return gcd(j,i%j);
    }
}

答案:2481215

注意:

①主方法使用了static,则另外一个方法也要有static。

②欧几里得算法求最大公约数。快速求得 a和 b 的最大公约数_codepupil的博客-CSDN博客

3.蛇形填数

蓝桥杯2020大学B组省赛_第3张图片 

 蓝桥杯2020大学B组省赛_第4张图片

 可知,第n行第n列的数是n^2+(n-1)^2。

import java.util.Scanner;
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
       System.out.println(20*20+19*19);
    }
}

答案:761

4.跑步锻炼

蓝桥杯2020大学B组省赛_第5张图片

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
       
        int length = 2;//跑步里程,从起始2000.1.1开始算,这一天2km。

         //每个月份的天数
        int[] monthNum = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        //起始2020年1月1日
        int month = 1;
        int day = 1;
        int year = 2000;//年份
        int week = 6;//礼拜
        while(!(year==2020&&month==10&&day==1)){//未到该日期
          if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){//闰年的判定。
             monthNum[2] = 29;
          }else {
             monthNum[2] = 28;
          }
          day++;
          week = (week+1) % 7;//取余获得星期几
          if(day > monthNum[month]){//过去了一个月
            month++;
            day = 1;//天数置为1.
            if(month > 12){//过去了一年
              month = 1;//月数置1
              year++;
            }
          }
          if(day == 1 || week == 1){//每月第一天,每周一
            length++;
          }
          length++;
        }
        System.out.println(length);
        
      
    }
}

 答案:8879

注意:

①如何判定闰年:(year % 4 == 0 && year % 100 != 0) || year % 400 == 0    四年一润,百年不润,四百年一润。

②如何设定每个月的天数:    int[] monthNum = {0,31,28,31,30,31,30,31,31,30,31,30,31};

③:跨年或者跨月:月数或者天数置0,年数或者月数++。

5.七段码

蓝桥杯2020大学B组省赛_第6张图片

 

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = 7 + 10 + 16 + 20 + 19 + 7 + 1;
        System.out.println(num);
        scan.close();
    }
}

答案:80           硬数

6.成绩统计

蓝桥杯2020大学B组省赛_第7张图片

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int a = 0, b = 0;
        for(int i = 0; i=60)a++;
          if(temp>=85)b++;
        }
        System.out.println(Math.round((float)a*100/n)+"%");
        System.out.println(Math.round((float)b*100/n)+"%");
        
        scan.close();
    }
}

 注意:四舍五入可以用Math.round()。记得要将int转为float避免除的时候将余数丢弃了。

round() 方法返回一个最接近的 int、long 型值,四舍五入。

round 表示"四舍五入",算法为Math.floor(x+0.5) ,即将原来的数字加上 0.5 后再向下取整,所以 Math.round(11.5) 的结果为 12,Math.round(-11.5) 的结果为 -11。

7.回文日期

蓝桥杯2020大学B组省赛_第8张图片 

 8.子串分值和

 蓝桥杯2020大学B组省赛_第9张图片

 自己写的:

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str=scan.nextLine();
        int count=0;
        for(int i=0;i list=new ArrayList<>();
        for(char c:arr){
            if(!list.contains(c))
                list.add(c);
        }
        return list.size();
    }
}

因为是n^2时间复杂度,爆了

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        char[] a=scan.next().toCharArray();
        int[] pre=new int[a.length];
        for(int i=0;i-1&&a[j]!=a[i]){
            j--;
          }
          pre[i]=j;
        }
        long count=0;
        for(int i=0;i

你可能感兴趣的:(蓝桥杯,职场和发展)