微軟程式設計之美2015 第一題

2021-07-01 21:38:20 字數 1792 閱讀 2491

時間限制:

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 的長度不...