【题目描述】:
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000年 1 月 1 日周六(含)到 2020 年 10 月 1日周四(含)。请问这段时间小蓝总共跑步多少千米?
【问题分析】:
- 判断闰年平年
- 将2020年特别取出(未满一年另算)
- 双重for循环以取出每年中的每日
- 判断满足周一或月初来进行计算
- 将最后一天加上
【代码实现】:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
scan.close();
int mouth0[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int mouth1[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int sum = 0;
int week = 6;
for(int a=2000;a <= 2020;a++){
if(a == 2020){
for(int i=1;i <= 9;i++){
for(int j=1;j <= mouth0[i];j++){
if(week == 1 || j == 1){
sum += 2;
}else{
sum++;
}
week = (week+1)%7;
}
}
}else if((a%4 == 0 && a%100 != 0) || a%400 == 0){
for(int i=1;i <= 12;i++){
for(int j=1;j <= mouth0[i];j++){
if(week == 1 || j == 1){
sum += 2;
}else{
sum++;
}
week = (week+1)%7;
}
}
}else{
for(int i=1;i <= 12;i++){
for(int j=1;j <= mouth1[i];j++){
if(week == 1 || j == 1){
sum += 2;
}else{
sum++;
}
week = (week+1)%7;
}
}
}
}
System.out.println(sum+2);//结果:8879
}