题目描述:
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。
小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。请问这段时间小蓝总共跑步多少千米?
#include <iostream>
using namespace std;
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool is_leap(int year)
{
return year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
}
int get_day(int year, int month)
{
if(month == 2)
return 28 + is_leap(year);
return days[month];
}
int main()
{
int sum = 0, ans = 0;
for (int i = 2000; i <= 2019; i ++)
for (int j = 1; j <= 12; j ++)
for (int k = 1; k <= get_day(i, j); k ++)
{
int weekday = (sum-2) % 7;
if(k == 1 || weekday == 0)
ans += 2;
else ans ++;
sum ++;
}
for (int j = 1; j <= 9; j ++)
for (int k = 1; k <= get_day(2020, j); k ++) {
int weekday = (sum-2) % 7;
if(k == 1 || weekday == 0)
ans += 2;
else ans ++;
sum ++;
}
cout << ans + 2 << endl;
return 0;
}