2015程式設計之美資格賽 A 2月29日

2021-07-01 22:30:23 字數 1511 閱讀 5064



時間限制:

2000ms

單點時限:

1000ms

記憶體限制:

256mb

給定兩個日期,計算這兩個日期之間有多少個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.解題思路:本題要求輸入兩個日期,輸出中間有多少個2月29日,實際上就是問中間有多少個閏年。根據閏年的定義,假設y2-y1=dy,那麼不難由容斥原理得到區間(y1,y2]中閏年的個數是dy/4-dy/100+dy/400。接下來就是處理兩個邊界,如果第乙個日期也包含了2.29日,就把結果+1,如果最後乙個日期不包含2.29日,就把結果-1即可。

3.**:

#define _crt_secure_no_warnings 

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

setyears;

const int mod = 100007;

const int n = 2000000000;

const char*s = ;

int id(char*str)

int solve(int m1,int d1,int y1,int m2,int d2,int y2)

if (y2 % 400 == 0 || (y2 % 4 == 0 && y2 % 100 != 0))

return num;

}int main()

return 0;

}

2023年程式設計之美(資格賽) 2月29日

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 給定兩個日期,計算這兩個日期之間有多少個2月29日 包括起始日期 1.年份能被4整除但不能被100整除 2.年份能被400整除 第一行為乙個整數t,表示資料組數。之後每組資料報含兩行。每一行格式為 month day,year ...

程式設計之美2015資格賽

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 給定兩個日期,計算這兩個日期之間有多少個2月29日 包括起始日期 1.年份能被4整除但不能被100整除 2.年份能被400整除 第一行為乙個整數t,表示資料組數。之後每組資料報含兩行。每一行格式為 month day,year ...

程式設計之美資格賽

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 給定2個樹a和b,保證a的節點個數 b的節點個數。現在你需要對樹a的邊進行二染色。乙個好的染色方案,指不存在乙個樹a中的連通塊,同時滿足以下2個條件 1.其中只有同色的邊 2.和b同構。兩個樹同構是指,存在乙個一一對映 既是單射...