题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
解法01
public static void main(String[] args) { int year=2000; int[] a1={31,28,31,30,31,30,31,31,30,31,30,31}; int[] a2={31,29,31,30,31,30,31,31,30,31,30,31}; int[] a3={31,29,31,30,31,30,31,31,30}; int rount=0; int week=5; while(year<2020){ if((year%4==0&&year%100!=0)||year%400==0){ for (int monthDays : a2) { for (int day = 1; day <= monthDays; day++) { rount++; week++; week=week==8?1:week; if(week==1||day==1){ rount++; } } } }else{ for (int monthDays : a1) { for (int day = 1; day <= monthDays; day++) { rount++; week++; week=week==8?1:week; if(week==1||day==1){ rount++; } } } } year++; } for (int monthDays : a3) { for (int day = 1; day <= monthDays; day++) { rount++; week++; week=week==8?1:week; if(week==1||day==1){ rount++; } } } System.out.println(rount+2); }
解法02
public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int[] a1={31,28,31,30,31,30,31,31,30,31,30,31}; int[] a2={31,29,31,30,31,30,31,31,30,31,30,31}; int[] a3={31,29,31,30,31,30,31,31,30}; int rount=0; int week=5; int count=0; //1号 int day01=21*12-2; //普通天数 for (int year = 2000; year <= 2020; year++) { if((year%4==0&&year%100!=0)||(year%400==0)){ rount+=366; }else{ rount+=365; } } rount=rount-31-30-31+1; //周一(不含1号) for (int year = 2000; year < 2020; year++) { if((year%4==0&&year%100!=0)||year%400==0){ for (int month : a2) { for (int day = 1; day <= month; day++) { week++; if(week==8){ week=1; if(day!=1){ count++; } } } } }else{ for (int month : a1) { for (int day = 1; day <= month; day++) { week++; if(week==8){ week=1; if(day!=1){ count++; } } } } } } for (int month : a3) { for (int day = 1; day <= month; day++) { week++; if(week==8){ week=1; if(day!=1){ count++; } } } } int result=day01+rount+count; System.out.println(result); scan.close(); }
解法03
public static void main(String[] args) { int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31}; int year=2000; int month=1; int day=1; int week=6; int rount=2; while(true){ System.out.println("OK"); if((year%4==0&&year%100!=0)||year%400==0){ months[2]=29; } else{ months[2]=28; } day++; week++; rount++; if(day>months[month]){ day=1; month++; } if(month==13){ month=1; year++; } if(week==8){ week=1; } if(day==1||week==1){ rount++; } if(year==2020&&month==10&&day==1){ break; } } System.out.println(rount); }