牛客練習賽30-A-迴文日期(構造)
阿新 • • 發佈:2018-12-21
題目描述
眾所周知,小K是nowcoder的暴政苟管理,所以小K很擅長踢樹,雖然本題與踢樹無關
小K喜歡將日期排列成yyyy-mm-dd的形式(位數不足添零補齊)的形式,雖然這與小K只會做迴文字串這道水題無關,但小K覺得日期組成的迴文串也是挺可愛的。作為一個涼心出題人,小K決定給你一個可愛的問題:給你兩個日期,求這兩個日期的閉區間內有多少個迴文的日期(輸入可能包含多組資料)
輸入描述:
第一行包含一個整數T,表示有T組資料 接下來T行,每行兩個“yyyy-mm-dd"形式的日期
輸出描述:
輸出共T行,每行輸出當前資料的迴文日期的個數
示例1
輸入
1 1926-08-16 2333-12-21
輸出
36
備註:
對於100%的資料,1 ≤ ? ≤ 10,且日期的形式一定是 YYYY-MM-DD,且輸 入日期一定合法,保證答案的年份不會超過4位
思路:直接構造迴文日期,判斷如果在起始年份和結束年份之間則cnt++。
AC程式碼:
#include <bits/stdc++.h> using namespace std; string str; int q[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 }; int main() { int t; scanf("%d",&t); while(t--) { int year1,month1,day1,year2,month2,day2,cnt = 0; scanf("%d-%d-%d",&year1,&month1,&day1); scanf("%d-%d-%d",&year2,&month2,&day2); for(int m = 1; m < 13; m++) { for(int d = 1; d <= q[m]; d++) { int y = d%10*1000+d/10*100+m%10*10+m/10; if(y >= year1 && y <= year2) cnt++; } } printf("%d\n",cnt); } }