問題描述:給定乙個年份y和乙個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年:
1) 年份是4的整數倍,而且不是100的整數倍;2) 年份是400的整數倍。
輸入格式:輸入的第一行包含乙個整數y,表示年份,年份在1900到2015之間(包含1900和2015)。輸入的第二行包含乙個整數d,d在1至365之間。
輸出格式:輸出兩行,每行乙個整數,分別表示答案的月份和日期。
樣例輸入
2015
80樣例輸出3
21樣例輸入
2000
40樣例輸出2
9思路:這題比較簡單,是其我第二題中很快得滿分的一題。首先判斷是否為閏年,然後講12個月以及每月對應的天數組合在一起,閏年則2月29天,根據count來計算具體哪一天。不是閏年則2月28天,其他**一樣。
**:
雖然得了滿分,但是可以看到有很多**是重複的。再此基礎上我稍加了修改,將**長度降到385:y=int(input())
d=int(input())
count=0
if (y%4==0 and y%100!=0) | (y%400==0):
month = [(1, 31), (2, 29), (3, 31), (4, 30), (5, 31), (6, 30), (7, 31), (8, 31), (9, 30), (10, 31), (11, 30),(12, 31)]
for i in range(12):
count+=month[i][1]
if count>=d:
print(month[i][0])
day=d-(count-month[i][1])
print(day)
break
else:
month = [(1, 31), (2, 28), (3, 31), (4, 30), (5, 31), (6, 30), (7, 31), (8, 31), (9, 30), (10, 31), (11, 30),(12, 31)]
for i in range(12):
count += month[i][1]
if count >= d:
print(month[i][0])
day = d - (count - month[i][1])
print(day)
break
修改後的**是:
這個題目做得快學到的東西也就不多,但有一點需要注意的是&與|兩邊的表示式一定要加括號,我第一次提交沒有加是80分。如果用and和or可以不加。這一點我刷題的時候掉過好幾次坑,要長點記性。y=int(input())
d=int(input())
month = [[1, 31], [2, 28], [3, 31], [4, 30], [5, 31], [6, 30], [7, 31], [8, 31], [9, 30], [10, 31], [11, 30], [12, 31]]
count=0
if (y % 4 == 0 and y % 100 != 0) | (y % 400 == 0):
month[1][1] = 29
for i in range(12):
count+=month[i][1]
if count>=d:
print(month[i][0])
day=d-(count-month[i][1])
print(day)
break
CCF 日期計算
問題描述 給定乙個年份y和乙個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年 1 年份是4的整數倍,而且不是100的整數倍 2 年份是400的整數倍。輸入格式 輸入的第一行包含乙個整數y,表示年份,年份在1900到2015之間 包含1900和2015 輸入的第二...
ccf試題 日期計算
問題描述 給定乙個年份y和乙個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年 1 年份是4的整數倍,而且不是100的整數倍 2 年份是400的整數倍。輸入格式 輸入的第一行包含乙個整數y,表示年份,年份在1900到2015之間 包含1900和2015 輸入的第二...
CCF真題之日期計算
201509 2 日期計算 問題描述 給定乙個年份y和乙個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年 1 年份是4的整數倍,而且不是100的整數倍 2 年份是400的整數倍。輸入格式 輸入的第一行包含乙個整數y,表示年份,年份在1900到2015之間 包含1...