计算星期几【基姆拉尔森公式】
基姆拉尔森公式推导
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); } }