蓝桥杯 - 跑步锻炼
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
代码
不使用Calandar类
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int[] months = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
int year = 2000;
int day = 1;
int month = 1;
int weekend = 6;
int km = 0;
while(true){
//先判断是否是闰年
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
months[2] = 29;
}else{
months[2] = 28;
}
//判断是周一或者是不是月初
if(weekend == 1 || day == 1){
km += 2;
}else{
km += 1;
}
//更新日期和周数
weekend++;
day++;
if(day > months[month]){
day = 1;
month++;
if(month > 12){
year++;
month = 1;
}
}
if(weekend > 7){
weekend = weekend % 7;
}
//20201001
if(year == 2020 && month == 10 && day == 1){
km+=2;
break;
}
}
System.out.println(km);
scan.close();
}
}
使用Calandar类 要导入Calandar类
import java.util.Scanner;
import java.util.Calendar;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Calendar c = Calendar.getInstance();
c.set(2000,0,1);
int km = 0;
while(true){
if(c.get(Calendar.DAY_OF_WEEK) == 2 || c.get(Calendar.DAY_OF_MONTH) == 1) km+=2;
else km+=1;
//终止条件
if(c.get(Calendar.YEAR) == 2020 && c.get(Calendar.MONTH) == 9 && c.get(Calendar.DATE) == 1) break;
c.add(Calendar.DATE,1);
}
System.out.println(km);
scan.close();
}
}