前言
前几日做到一个机试题,给出一个日期,让你输出那天是星期几,这种题无疑两种思路:一是从今天(前提是知道今天日期及周几)开始推算,计算今天与目标日期差的天数再取模运算,考虑到还要考虑闰年什么的,立即推->用下一种方法;直接利用一个什么公式来计算(问题是这样算起来容易,但公式不好记啊啊啊)。
蔡勒公式
w
=
(
C
/
4
−
2
C
+
Y
+
Y
/
4
+
13
(
M
+
1
)
/
5
+
D
−
1
)
%
7
w =(C/4-2C+Y+Y/4+13(M+1)/5+D-1)\%7
w=(C/4−2C+Y+Y/4+13(M+1)/5+D−1)%7
其中
/
/
/ 为除法运算,结果取整(即商),
%
\%
% 为取模运算;
C
C
C 表示已过世纪数,即本世纪减一,;
Y
Y
Y 表示 世纪内的年份,即一般是年份的后两位数字;
M
M
M 代表月份,如果
M
<
2
M n)
{
for (int i = 0; i > y >> m >> d;
if (m m >> d;
if (m d;
printMon(y, m, d);
return 0;
}
int week(const int y, const int m, const int d) // 利用蔡勒公式求星期几
{
int y1 = y;
int m1 = m;
int d1 = d;
if (m1 |