解析:
方法一:通用型
- Java向上舍入:(x+6)/7
- (1+6)/7=1
- (2+6)/7=1
- (3+6)/7=1
- (4+6)/7=1
- (5+6)/7=1
- (6+6)/7=1
- (7+6)/7=1
- (8+6)/7=2
- (9+6)/7=2
- (10+6)/7=2
- (11+6)/7=2
- (12+6)/7=2
- (13+6)/7=2
- (14+6)/7=2
//跑步锻炼
public class Main{
public static int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
public int startYear,startMonth,startDay,endYear,endMonth,endDay;
public static int beginning=0;
public static int isMondayAndBegin = 0;
public boolean isLeapYear(int year){
if (year%4==0&&year%100!=0||year%400==0) {
return true;
}
return false;
}
public int getDay(){
int daysum = 0;
for (int i = startYear; i < endYear; i++) {
if (isLeapYear(i)==true)
months[2] = 29;
else
months[2] = 28;
for (int j = 1; j < 13; j++) {
daysum+=months[j];
if((daysum -2 +1)%7==1)
isMondayAndBegin++;
}
beginning+=12;
}
if (isLeapYear(endYear)==true)
months[2] = 29;
else
months[2] = 28;
for (int i = 1; i < endMonth; i++) {
daysum+=months[i];
beginning++;
}
daysum+=endDay;
return daysum;
}
public ExaminationB(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay) {
this.startYear = startYear;
this.startMonth = startMonth;
this.startDay = startDay;
this.endYear = endYear;
this.endMonth = endMonth;
this.endDay = endDay;
}
public static void main(String[] args) {
ExaminationB examinationB = new ExaminationB(2000, 1, 1, 2020, 10, 1);
int daysum = examinationB.getDay();
int monday = (daysum-2+6)/7;
int begin = examinationB.beginning;
int isMondayAndBegin = examinationB.isMondayAndBegin;
System.out.println(monday+begin+daysum-isMondayAndBegin);
}
}
方法二:特殊性
- week初始化为6
- 特殊节点的退出
- Java程序的正常退出
- Java程序的非正常退出
public class ExaminationBAdvance {
public static boolean isLeapYear(int year){
if (year%4==0&&year%100!=0||year%400==0) {
return true;
}
return false;
}
public static void main(String[] args) {
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
int count = 0;
int week = 6;
for (int i = 2000; i <= 2020; i++) {
for (int j = 1; j <= 12; j++) {
if (isLeapYear(i)) months[2]=29;
else months[2] = 28;
for (int k = 1; k <= months[j] ; k++) {
count++;
if((week%7==1)||k==1) count++;
week++;
if (i==2020&&j==10&&k==1){
System.out.println(count);
System.exit(0);
}
}
}
}
}
}
参考材料
蓝桥杯真题——跑步锻炼(c语言)_小蓝每天都锻炼身体c语言_Ower@的博客-CSDN博客