计算星期几【基姆拉尔森公式】

基姆拉尔森公式推导

https://www.cnblogs.com/SeekHit/p/7498408.html

使用注意事项

注意要将本年的1月与2月视为下一年的13月与14月

计算公式

 w = (d + 1 + 2 * m + 3 * (m + 1) / 5 + y + y/ 4 - y / 100 + y / 400) % 7

代码

#include<iostream>
#include<cstdio>
using namespace std;
int CaculateWeekDay(int y, int m, int d)
{
    if (m == 1 || m == 2)m += 12, y--;
    int w = (d + 1 + 2 * m + 3 * (m + 1) / 5 + y + y/ 4 - y / 100 + y / 400) % 7;
    return w;
}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int y, m, d;
    while (1)
    {
        cin >> y >> m >> d;
        cout << CaculateWeekDay(y, m, d);
    }
}

 

posted @ 2020-06-05 20:28  Jason66661010  阅读(193)  评论(0编辑  收藏  举报