時間限制:
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: 1case #2: 0
case #3: 1
case #4: 3
思路:用for迴圈求解肯定tle,一開始資料沒看仔細,tle好幾發,看得別人的思路就是使用容斥原理。
**:
/*
*/#include #include #include #include #include #include #include #define inf 1e9
const int maxn=5000+100;
typedef long long ll;
using namespace std;
int main()
if (strcmp(month2,"january")==0 || (strcmp(month2,"february")==0&&day2<29))
count = (year2>>2)-(year1>>2);
count = count -(year2/100-year1/100);
count += (year2/400-year1/400);
printf ("case #%d: %d\n", i, count);}}
return 0;
}
容斥原理 數論
兩個集合的容斥關係公式 a b a b a b a b 重合的部分 三個集合的容斥關係公式 a b c a b c a b b c c a a b c 最後可以推廣到n個集合,集合裡的元素為奇數則加,偶數減 hdu 4135 很簡單,直接求出所有的質因子,然後容斥解決 author crystal ...
容斥原理,反演
大概知道為什麼自己水平比較渣啦。一開始只會反演,然後被容斥驚豔到。然後寫了一段時間容斥,反演忘光光。所以融會貫通真的很難。多校的三道題,當時是用反演做的。事實上以前就知道容斥跟莫比烏斯函式值的關係,然後熟練掌握 然後一段時間沒用就忘了哈。簡單來說就是,求乙個數和乙個集合中的數互質的個數,把集合中乙個...
關於容斥原理
容斥原理大概是這樣的,以長方體體積並為例,我們需要用容斥原理容斥出若干個長方體體積的並.首先,我們將每個長方體標號為1 n,那麼這些長方體的取捨顯然可以表示為乙個二進位制的數字s.設f s 表示長方體取捨狀態為s時,長方體的體積並,於是我們可以知道f 111111 有n個1 就是我們最終的所求.好,...