傳送門
相關變數解釋year1,month1,day1 : date1對應的年、月、日year2,month2,day2 : date2對應的年、月、日
這道題算是考思維+code能力??
易得,每一年最多有乙個回文日期;
例如 2000 的回文日期為 2000 0002
for i : year1 to year2
找到每個 i 的回文日期對應的月(month)、日(day),並進行兩個判斷
(1):判斷month,day是否合法。
(2):判斷當前日期是否在date1與date2之間
列舉月和日對應的回文年份,看其回文組成的八位數是否在date1和date2內,什麼意思呢?
例如,對於01月23日,其對應的回文年份為3210,其回文組成的八位數為 32100123,在和輸入的date1與date2比較,看是否在其中,如果在,count++;
不用特判某一年是否為閏年,為什麼呢?
某年是否為閏年只會影響 2 月的天數,2月最多有 29 天,其對應的回文年份為 9220,但9220是閏年。
思路2來自集訓隊隊員部落格:
1 #include2思路1using
namespace
std;
3#define issat(x) ((x) >= 1 &&(x) <= 12)//
判斷是否為合法的月份
4#define isrun(x) ((x%4 == 0 && x%100 != 0) || (x%400 == 0))//
判斷是否為閏年56
char data[2][8];7
int monthday[2][13]=, //
0 : 平年
8 };//
1 : 閏年910
int transform(int a,int b,int d)
16void search(int year,char *s)while(year != 0
);23}24
void
solve()
2545}46
else
4755
}56 printf("
%d\n
",res);57}
58int
main()
59
1 #include2思路2using
namespace
std;
3int
date1,date2;
4int monthday[13]=;56
void
solve()
716 printf("
%d\n
",res);17}
18int
main()
19
NOIP2016普及組 回文日期
演算法標籤 列舉,模擬 題目描述 在日常生活中,通過年 月 日這三個要素可以表示出乙個唯一確定的日期。牛牛習慣用 8 位數字表示乙個日期,其中,前 4 位代表年份,接下來 2 位代表月份,最後 2 位代表日期。顯然 乙個日期只有一種表示方法,而兩個不同的日期的表示方法不會相同。牛牛認為,乙個日期是回...
NOIP 2016 回文日期
洛谷p2010 jdoj 3313 在日常生活中,通過年 月 日這三個要素可以表示出乙個唯一確定的日期。牛牛習慣用8位數字表示乙個日期,其中,前4位代表年份,接下來2位代表月 份,最後2位代表日期。顯然 乙個日期只有一種表示方法,而兩個不同的日期的表 示方法不會相同。牛牛認為,乙個日期是回文的,當且...
NOIP2016普及組 複賽 回文日期
題目自己點,複製過來會飛掉 這個題,當時想得太複雜,但沒想到竟然得了70分 真的不想說什麼 當時的思路 列舉每一天,然後開頭和末尾單獨處理,於是,洋洋灑灑寫了100多行。正確思路 列舉每一天 不要打我臉 當然方法不同,量也就50行,不難理解。第一步 輸入兩個int整數即可 因為只有8位 然後分離出它...