【hihocoder】#1148 2月29日
4676 ワード
タイトルリンク:http://wwew.hihocoder.com/problemset/problem/1148
タイトル:2つの日付を指定し、この2つの日付の間に2月29日(開始日を含む)がどれだけあるかを計算します.
うるう年のみ2月29日、次の条件を満たす年はうるう年です.1.年は4で除けるが100で除けることはできません.2.年は400で除けることができます.
考え方:0~ある年から閏年の個数を計算し、year/400+year/4-year/100を直接使うのはどこが間違っているのか分からない.気持ち悪いOJ...この問題で私があげたアルゴリズムはWAです.の残してから直す.アルゴリズム:
タイトル:2つの日付を指定し、この2つの日付の間に2月29日(開始日を含む)がどれだけあるかを計算します.
うるう年のみ2月29日、次の条件を満たす年はうるう年です.1.年は4で除けるが100で除けることはできません.2.年は400で除けることができます.
考え方:0~ある年から閏年の個数を計算し、year/400+year/4-year/100を直接使うのはどこが間違っているのか分からない.気持ち悪いOJ...この問題で私があげたアルゴリズムはWAです.の残してから直す.アルゴリズム:
data = {"January": 1, "February": 2, "March": 3, "April": 4, "May": 5, "June": 6, "July": 7, "August": 8,
"September": 9, "October": 10, "November": 11, "December": 12}
def isLeap(i):
if ((i % 400 == 0)or(i % 4 == 0 and i % 100 != 0)):
return True
else:
return False
def parse(str):
res = []
res.append(int(str.split()[2])) # year
res.append(int(data[str.split()[0]])) # month
res.append(int(str.split()[1].replace(',',''))) # day
return res
def cal(s):
sd = parse(s)
res=sd[0]/4+sd[0]/400-sd[0]/100
if(isLeap(sd[0]) and(sd[1]<2) or (sd[1]==2 and sd[2]<29)):
res-=1
return res
try:
t = int(raw_input())
i=1
while 1 <=t:
start = raw_input()
end = raw_input()
s1 = cal(start)
s2 = cal(end)
res = s2-s1
startd=parse(start)
if(isLeap(startd[0])and(startd[1]==2)and(startd[2]==29)):
res+=1
print("Case #%d: %d"%(i,res))
i+=1
except EOFError:
print('error')