题目:小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2千米。
小蓝跑步已经坚持了很长时间,从 2000年 1月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
#include<iostream>
using namespace std;
class Day1//平年
{
public:
int m_month = 1;
int m_day = 1;
int move_onday(int day,int month) {
day++;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (day > 31)
{
day = 1;
}
}
if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day > 30)
{
day = 1;
}
}
if (month == 2)
{
if (day > 28)
{
day = 1;
}
}
m_day = day;
return m_day;
}
};
class Day2//闰年
{
public:
int m_month = 1;
int m_day = 1;
int move_onday(int day ,int month) {
day++;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (day > 31)
{
day = 1;
}
}
if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day > 30)
{
day = 1;
}
}
if (month == 2)
{
if (day > 29)
{
day = 1;
}
}
m_day = day;
return m_day;
}
};
class Month
{
public:
int m_month = 1;
int move_onmonth(int month) {
month++;
if (month > 12)
{
month = 1;
}
m_month = month;
return m_month;
}
};
class Week
{
public:
int m_week = 6;
int move_onweek(int week) {
week++;
if (week > 7)
{
week = 1;
}
m_week = week;
return m_week;
}
};
class Year
{
public:
int m_year = 2000;
int move_onyear(int year,int month,int day)
{
if (month == 1&&day==1)
{
year++;
}
m_year = year;
return m_year;
}
};
int main()
{
Day1 day1;
Day2 day2;
Week week;
Month month;
Year year;
int num = 0;
while(year.m_year != 2020||month.m_month !=10||day2.m_day !=2)
{
if (year.m_year % 400 == 0 || (year.m_year % 4 == 0 && year.m_year % 100 != 0)) {
cout << year.m_year << "年" << month.m_month << "月" << day2.m_day << "日 星期" << week.m_week << endl;
if (day2.m_day == 1)
{
num = num + 2;
}
else if (week.m_week == 1)
{
num = num + 2;
}
else
{
num++;
}
day2.move_onday(day2.m_day, month.m_month);
week.move_onweek(week.m_week);
if (day2.m_day == 1)
{
month.move_onmonth(month.m_month);
}
year.move_onyear(year.m_year, month.m_month, day2.m_day);
cout << num << endl;
}
else
{
cout << num << endl;
if (day1.m_day == 1)
{
num = num + 2;
}
else if (week.m_week == 1)
{
num = num + 2;
}
else
{
num++;
}
cout << year.m_year << "年" << month.m_month << "月" << day1.m_day << "日 星期" << week.m_week << endl;
day1.move_onday(day1.m_day, month.m_month);
week.move_onweek(week.m_week);
if (day1.m_day == 1)
{
month.move_onmonth(month.m_month);
}
year.move_onyear(year.m_year, month.m_month, day1.m_day);
}
}
}