?
?
蔡勒公式
?
蔡勒(Zeller)公式,是一個計算星期的公式,隨便給一個日期,就能用這個公式推算出是星期幾。時間復雜度:O(1)。具體的在紅書P229有。
若要計算的日期是在1582年10月4日或之前,公式則為:
如果沒有是之后的話:
可以這樣:
也可以這樣:
具體推導:蔡勒公式的推導過程
貼個代碼:
int whatday(int y, int m, int d)
{int ans;if(m == 1 || m == 2) m += 12, y--;if((y < 1752) || (y == 1752 && m < 9) || (y == 1752 && m == 9 && d < 3))ans = (d + 2*m + 3*(m + 1) / 5 + y + y/4 + 5) % 7 + 1;else ans = (d + 2*m + 3*(m + 1) / 5 + y + y/4 - y/100 + y/400) % 7 + 1;return ans;
}