一:基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
d:day
m:month
y:year
当m=1或者m=2时
m+=12;y--
也就是把本年的一月二月当作上一年的13月和14月
(公式太长有点难记,我又不能理解这个公式怎么推出来的,过程实在太复杂)
C++代码:
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
using namespace std;
int main()
{
int y,m,d,w;
while(cin>>y>>m>>d)
{
if(m<3)
{
m+=12;
y--;
}
w=(d+2*m+(m+1)*3/5+y+y/4+y/400-y/100+1)%7;
cout<<w<<endl;//输出是几就代表星期几,0代表星期天
}//2019 7 27 输出是6,代表这天是星期六
return 0;
}
二:蔡勒公式
这个好像更难记住</