小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int cnt=0,a=6,i,j,k;
for(i=2000;i<=2019;i++){//模拟年
for(j=1;j<=12;j++){//模拟月
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){//闰月时
for(k=1;k<=31;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
else if(j==4||j==6||j==9||j==11){//平月时
for(k=1;k<=30;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
else{
if(i%400==0||(i%4==0&&i%100!=0)){
for(k=1;k<=29;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
else{
for(k=1;k<=28;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
}
}
}
for(j=1;j<=9;j++){
if(j==1||j==3||j==5||j==7||j==8){//闰月时
for(k=1;k<=31;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
else if(j==4||j==6||j==9){//平月时
for(k=1;k<=30;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
else{
for(k=1;k<=29;k++){
if(a%7==1){
cnt+=2;
}
else{
if(k==1){
cnt+=2;
}
else cnt+=1;
}
a++;
}
}
}
cnt+=2; //最后加上10月1日的2千米
printf("%d",cnt);
return 0;
}
就是一个简单的模拟日历的过程,思路简单模拟稍有些麻烦,总体来说还蛮有意思的