瀏覽單個文章
booger
Amateur Member
 
booger的大頭照
 

加入日期: Nov 2004
您的住址: 丁丁科技大學
文章: 45
有趣的算法,
用來寫萬年曆bigO應該會少很多

不過我都是直接看手錶...


引用:
作者fenris
http://i243.photobucket.com/albums/ff20/fenris0014/2008calendar-1.jpg
http://i243.photobucket.com/albums/...8calendar-2.jpg

每個月份用一個數字代表,數字取決於一號的前一天為星期幾
Sun : 0 Mon : 1 Tue : 2 Wed : 3 Thu : 4 Fri : 5 Sat : 6

所以2008年各月的數字代表為
145
136
140
250


算法 : (代表數字+天數) 除 7 取餘數
例 : 4/17
4月代表數字為 1
故 (1 + 17) / 7 = 2...餘4(星期四)

往前或往後推算很簡單,一年 365 天
365 / 7 = 52.....餘1
所以隔年的星期數會加 1
遇到閏年再加 1

以 2009 年為例
2008 為閏年,所以 1、2 月每天的星期數要加 2
其他各月加 1


我每年都會重背當年份的12個代表數字
算星期幾速度才會快
如果有更好的算法也請大家分享一下
__________________
動怒不動氣(對不滿的事情表達不悅,但是不讓其過份影響個人情緒)
挑嘴不挑食(對飲食頗有想法但是有得吃就吃)
舊 2007-12-18, 05:59 AM #25
回應時引用此文章
booger離線中