時間限制:
2000ms
單點時限:
1000ms
記憶體限制:
256mb
給定兩個日期,計算這兩個日期之間有多少個2月29
日(包括起始日期)。
只有閏年有2月29
1. 年份能被
4整除但不能被
100整除
2. 年份能被
400整除
第一行為乙個整數t
,表示資料組數。
之後每組資料報含兩行。每一行格式為"month day, year"
,表示乙個日期。
month
為中的乙個字串。
day與
year
為兩個數字。
資料保證給定的日期合法且第乙個日期早於或等於第二個日期。
對於每組資料輸出一行,形如"case #x: y"。x
為資料組數,從
1開始,
y為答案。
1 ≤ t ≤ 550
小資料:
2000 ≤ year ≤ 3000
大資料:
2000 ≤ year ≤ 2×109
樣例輸入 4
january 12, 2012
march 19, 2012
august 12, 2899
august 12, 2901
august 12, 2000
august 12, 2005
february 29, 2004
february 29, 2012
樣例輸出
case #1: 1
case #2: 0
case #3: 1
case #4: 3
微軟程式設計之美的資格賽,看了看題目,第一題還是可做的,第二題暴力也許能過,暫且不提。
這題拿到手後感覺是很水的,就是乙個判斷閏年的事,當然,大資料到2*10^9
,暴力肯定不行,可小資料只有
2000~3000
啊。很快的碼完**,提交,
wa,好,很乾脆。然後仔細檢視**和想極限資料,果然是忘了同一年的兩種特殊情況,改完後提交,
wa。好吧,繼續看。出了很多資料,一直沒發現錯誤。然後發現這個比賽還是有討論區的,進去看看,發現很多人第一題都在
wa,有的人從上午
wa到下午,好吧,鬼哭狼嚎。淡定,繼續找。這是想到了讀入方面,仔細檢查,才發現有問題。但是題目描述中對日期為個位數時沒有註明是只輸入
1, 還是
01, (舉例) ,測試樣例中也沒有。真是糾結啊,好吧,試試,改了一下,提交,ac。
總結來說,還是輸在了對細節的處理還有讀入時的問題。做了很多,還是不長記性,字串的讀入是最容易挖坑的。雖然這題不是英文的,但我感覺還是很有意義。謹記,謹記,字串的處理一定要很小心才對。
#include #include int pan(int year)
int pan2(char month)
int main()
//printf("%d %d\n",p1,p2);
if (year1==year2 && two==1 || year1==year2 && two==2 && day2<29) sum=0;
if (year1==year2 && one>2) sum=0;
if (year1==year2 && p1==1 && p2==1) sum--;
printf("case #%d: %d\n",k+1,sum);
}return 0;
}
程式設計之美2015第一題
給定兩個日期,計算這兩個日期之間有多少個2月29日 包括起始日期 只有閏年有2月29日,滿足以下乙個條件的年份為閏年 1.年份能被4整除但不能被100整除 2.年份能被400整除 第一行為乙個整數t,表示資料組數。之後每組資料報含兩行。每一行格式為 month day,year 表示乙個日期。mon...
程式設計之美2015初賽A
時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 兩個數a和 b a第一行為乙個數t,為資料組數。之後每組資料報含兩行。第一行為n,為集合s的大小。第二行為n個整數,表示集合內的數。對於每組資料輸出一行,形如 case x y x為資料編號,從1開始,y為最大的子集的大小。1 ...
微軟程式設計之美 初賽
相似字串對於兩個長度相等的字串,我們定義其距離為對應位置不同的字元數量,同時我們認為距離越近的字串越相似。例如,0123 和 0000 的距離為 3,0123 和 0213 的距離則為 2,所以與 0000 相比,0213 和 0123 最相似。現在給定兩個字串 s1 和 s2,其中 s2 的長度不...