第十一届蓝桥杯——JAVA组真题

简介: 第十一届蓝桥杯——JAVA组真题

1.约数问题

ff39117cc4e941059a393ced2d0d76db.png

public class Main {
//    对于一个整数,能整除这个整数的数称为这个数的约数。
//    例如:1, 2, 3, 6 都是 6 的约数。
//    请问 78120 有多少个约数
    public static void main(String[] args) {
     int yueshu=0;
     for(int i=1;i<=78120;i++){
         if(78120%i==0){
             yueshu++;
         }
     }
        System.out.println("78120有"+yueshu+"个约数");
    }
}


这道题比较基础 直接遍历 然后判断条件就行了  

记住 !! 一定只能提交答案 不需要提交源码(doge)


4905e3b64eeb4764a2bd1a3a724d205f.png


2.跑步训练


fd8041d2778647f3adf1bc1552a12a5d.png


代码如下 :


public class 跑步 {
    static int []week={6,7,1,2,3,4,5};//一月一号星期六,依次往后推
    static int []months={0,31,28,31,30,31,30,31,31,30,31,30,31};
    public static void main(String[] args) {
        int ans=0;
        int sumday=0;//总天数.用来判断星期几
        //年
        for(int year=2000;year<=2020;year++){
            //判断是否是闰年
            if(!check(year)){
                //不是闰年就按正常的来
                for(int month=1;month<=12;month++){
                    for(int day=1;day<=months[month];day++){
                        if(day==1||week[sumday%7]==1)
                            ans+=2;
                        else ans++;
                        sumday++;
                    }
                }
            }
            //是闰年
            else {
                if(year==2020){//特判一下2020年因为今年就10个月跑
                    for (int month = 1; month <= 10; month++) {
                        if(month==10){
                            ans+=2;
                            break;
                        }
                        if (month != 2&&month<10) {
                            for (int day = 1; day <= months[month]; day++) {
                                if (day == 1 || week[sumday % 7] == 1)
                                    ans += 2;
                                else ans++;
                                sumday++;
                            }
                        }
                        else if(month==2){
                            for (int day = 1; day <= 29; day++) {
                                if (day == 1 || week[sumday % 7] == 1)
                                    ans += 2;
                                else ans++;
                                sumday++;
                            }
                        }
                    }
                }
                else {
                    for (int month = 1; month <= 12; month++) {
                        if (month != 2) {
                            for (int day = 1; day <= months[month]; day++) {
                                if (day == 1 || week[sumday % 7] == 1)
                                    ans += 2;
                                else ans++;
                                sumday++;
                            }
                        } else {
                            for (int day = 1; day <= 29; day++) {
                                if (day == 1 || week[sumday % 7] == 1)
                                    ans += 2;
                                else ans++;
                                sumday++;
                            }
                        }
                    }
                }
            }
        }
        System.out.println(ans);
    }
    static boolean check(int year){
        if((year%4==0&&year%100!=0)||year%400==0){
            return true;
        }
        else return false;
    }
}

我更推荐下面这种 用api的做法 比较好

代码如下:

import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main {
    public static void main(String[] args) {
        Calendar start = Calendar.getInstance();
        Calendar end = Calendar.getInstance();
        start.set(2000, Calendar.JANUARY, 1);
        end.set(2020, Calendar.OCTOBER, 1);
        int res = 0;
        do {
            System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(start.getTime()));
            start.add(Calendar.HOUR, 24);
            res += start.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY || start.get(Calendar.DAY_OF_MONTH) == 1 ? 2 : 1;
        } while (start.getTimeInMillis() < end.getTimeInMillis());
        System.out.println(res);
    }
}


f2329b869a154290a424ca6b030ae85d.png


答案是 8878千米  

一定要记住 直接提交 答案就好呢!!

以上就是我给友友们 准备的两道基础题  

后面我会写更多类似的真题 哈

相关文章
|
6月前
|
Java
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
53 4
|
6月前
|
Java
蓝桥杯Java组暴力递归搜图
蓝桥杯Java组暴力递归搜图
34 4
|
6月前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
45 3
|
6月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
51 2
|
6月前
|
Java
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
39 1
|
6月前
|
Java
2023蓝桥杯大赛软件类省赛Java大学B组G题 买二增一 队列的简单应用
2023蓝桥杯大赛软件类省赛Java大学B组G题 买二增一 队列的简单应用
39 1
|
6月前
|
存储 前端开发 算法
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
33 0
|
6月前
|
算法 Java 编译器
第十五届蓝桥杯Java软件开发大学B组自我经验小结
第十五届蓝桥杯Java软件开发大学B组自我经验小结
52 0
|
6月前
|
Java API
备战第十五届蓝桥杯Java软件开发大学B组常见API记录
备战第十五届蓝桥杯Java软件开发大学B组常见API记录
40 0
|
6月前
|
Java
2023蓝桥杯大赛省赛Java大学B组 矩形总面积
2023蓝桥杯大赛省赛Java大学B组 矩形总面积
24 0