0
点赞
收藏
分享

微信扫一扫

【蓝桥杯-跑步练习】

攻城狮Chova 2022-03-30 阅读 68
c++

在这里插入图片描述

// 枚举每一天, 典型的暴力模拟
// 周一的表示方法: (sum + 5) % 7 == 1;

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int get(int y, int m)
{
    if(m != 2) return month[m];
    
    int leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0; // zhuyi
    return leap + 28;
}

int main()
{
    int sum = 5, res = 0;
    for(int y = 2000; y <= 2019; y ++ ) // 20200101 - 20191231;
        for(int m = 1; m <= 12; m ++ )
            for(int d = 1; d <= get(y, m); d ++)
            {
                sum ++ ;
                //cout << sum % 7<<' ';
                if(d == 1 || sum % 7 == 1) res += 2;
                else res += 1;
            }
    
    for(int y = 2020; y <= 2020; y ++ ) // 20200101-20201001;
        for(int m = 1; m <= 9; m ++ )
            for(int d = 1; d <= get(y, m); d ++)
            {
                sum ++ ;
                //cout << sum % 7<<' ';
                if(d == 1 || sum % 7 == 1) res += 2;
                else res += 1;
            } 
    cout << res + 2;
    
}
#include <bits/stdc++.h>

using namespace std;

int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int res;
int sum = 5;

//(sum + 5) % 7 == 1;


int main()
{
    for(int y = 2000; y <= 2019; y ++ ) // 年
    {
        month[2] = 28;
        if(y % 100 != 0 && y % 4 == 0 || y % 400 == 0) // 特别的年
        {
            month[2] = 29;
        }
        for(int m = 1; m <= 12; m ++) // 月
        {
            for(int d = 1; d <= month[m]; d ++ ) // 日
            {
                sum ++;
                if(d == 1 || sum % 7 == 1) res += 2;
                else 
                    res += 1;
            }
        }
    }
    
    // 2020 nian
    for(int m = 1; m <= 9; m ++ )
    {
        month[2] = 29;
        for(int d = 1; d <= month[m]; d ++ )
        {
            sum ++ ;
            if(d == 1 || sum % 7 == 1) res += 2;
            else 
                res += 1;
        }
    }
    
    res += 2;
    
    cout << res;
}
// 枚举每一天, 典型的暴力模拟
// 周一的表示方法: (sum + 5) % 7 == 1;

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int y, m, d;

int check(int x)
{
    y = x / 10000;
    m = x / 100 % 100;
    d = x % 100;
    //cout <<y << ' ' << m << ' ' << d << endl;
    int leap = (y % 4 == 0 && y % 100) || y % 400 == 0;
    
    if(m == 0 || m > 12 || d == 0) return 0;
    
    if(m == 2)
    {
        if(d > 28 + leap) return 0;
    }
    else
    {
        if(d > month[m]) return 0;
    }
   
    return 1; 
}

int main()
{
    int sum = 5, res = 0;
    for(int i = 20000101; i <= 20201001; i ++ )
    {
        if(!check(i)) continue;
        //cout << i << endl;
        sum ++;
        y = i / 10000;
        m = i / 100 % 100;
        d = i % 100; 
        if(d == 1 || sum % 7 == 1) res += 2;
        else res += 1;
    }
    
    cout << res;
}
举报

相关推荐

蓝桥杯 跑步锻炼

跑步训练(蓝桥杯真题)

蓝桥杯练习

蓝桥杯练习------基础练习

蓝桥杯练习016

0 条评论