1341. 十三号星期五

按天数模拟。

const int N=110;
int month[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int cnt[7];
int n;

bool isLeap(int year)
{
    return year % 4 == 0 && year % 100 || year % 400 == 0;
}

int main()
{
    cin>>n;

    int yy=1900,mm=1,dd=1;
    int weekday=0;
    while(yy < 1900+n-1 || mm < 12 || dd < 31)
    {
        dd++;
        weekday=(weekday+1)%7;
        if(dd == 13) cnt[weekday]++;
        
        if(dd == month[isLeap(yy)][mm]+1)
        {
            mm++;
            dd=1;
        }
        if(mm == 13)
        {
            yy++;
            mm=1;
        }
    }

    for(int i=0;i<7;i++)
        cout<<cnt[(i+5)%7]<<' ';

    //system("pause");
    return 0;
}

按月份模拟。

const int N=110;
int month[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int cnt[7];
int n;

bool isLeap(int year)
{
    return year % 4 == 0 && year % 100 || year % 400 == 0;
}

int main()
{
    cin>>n;

    int weekday=0;
    for(int i=0;i<n;i++)
    {
        int year=1900+i;
        for(int j=1;j<=12;j++)
        {
            cnt[(weekday+12)%7]++;
            weekday=(weekday+month[isLeap(year)][j])%7;
        }
    }
    
    for(int i=0;i<7;i++)
        cout<<cnt[(i+5)%7]<<' ';
    cout<<endl;
    //system("pause");
    return 0;
}
posted @ 2021-05-02 22:24  Dazzling!  阅读(31)  评论(0编辑  收藏  举报