题目描述
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
枚举每一天
时间复杂度
参考文献
C++ 代码
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <map>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
const int maxn = 3001;
const int INF = 0x3f3f3f3f;
const int mod=1000000007;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int yue=1,ri=1,year=2000,sum=0,zhou=6;
while(1)
{
if(year==2020&&yue==10)
{
break;
}
if(zhou==1||ri==1)
{
sum+=2;
}
else
{
sum++;
}
zhou++;
if(zhou>7)
{
zhou=1;
}
if(yue==12&&ri==31)
{
year++;
yue=1;
ri=1;
continue;
}
int fl=0;
if((year%400==0)||(year%4==0)&&(year%100!=0))
{
fl=1;
}
if(yue==2)
{
if(fl&&ri==a[yue]+1)
{
ri=1;
yue++;
continue;
}
else if(fl==0&&ri==a[yue])
{
ri=1;
yue++;
continue;
}
}
else if(ri==a[yue])
{
ri=1;
yue++;
continue;
}
ri++;
}
cout << sum+2;
return 0;
}