5、跑步锻炼
题目 跑步锻炼
思路分析
组合拳一套
按日期枚举
每天加1km
碰到1号和星期一 而外加1km
1号比较好判断
星期一就麻烦点 可以做个计数
因为第一天是星期六 要隔三天是星期一
所以天数模上7 如果等于3 就说明是星期一
代码实现
#include<bits/stdc++.h>
using namespace std;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool is_leap(int y){
return y%100 && y%4==0 || y%400==0;
}
int getdays(int y,int m){
return days[m]+(m==2 && is_leap(y));
}
void nextday(int &y,int &m,int &d){
d++;
if(d>getdays(y,m)){
d=1;
m++;
if(m>12){
m=1;
y++;
}
}
}
int main()
{
int cury=2000,curm=1,curd=1;
int cnt=1;
int sum=0;
while((cury<2020) ||
(cury==2020 && curm<10) ||
(cury==2020 && curm==10 && curd<2)){
if(curd==1 || cnt%7==3){
sum++;
}
sum++;
nextday(cury,curm,curd);
cnt++;
}
cout<<sum;
return 0;
}
💬 评论