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

Posted 学好c语言的小王同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十一届蓝桥杯——JAVA组真题相关的知识,希望对你有一定的参考价值。

1.约数问题

 

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 

 

 2.跑步训练

 

代码如下 :

 

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);
    

答案是 8878千米 

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

 

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

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

如果我的文章对友友们有帮助的话 

麻烦给个三连ba(狗头)

 

 祝大家 新的一年offer拿到手软哈哈哈哈

以上是关于第十一届蓝桥杯——JAVA组真题的主要内容,如果未能解决你的问题,请参考以下文章

第十二届蓝桥杯 2021年国赛真题 (Java 大学B组)

第十二届蓝桥杯 2021年省赛真题 (Java 大学B组) 第一场 (更新中)

Java实现蓝桥杯第十二届2021年JavaB组真题

第十三届蓝桥杯省赛 JAVA B组(真题解析+个人体会)(已更新完G题)

蓝桥杯真题,求第二空的解析?

第十三届蓝桥杯国赛真题 PythonB组 复盘以及获奖感言(国一!!!)