NOIP 普及組 2016 回文日期

2022-05-02 19:45:13 字數 1527 閱讀 1813

傳送門

相關變數解釋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

using

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

1 #include2

using

namespace

std;

3int

date1,date2;

4int monthday[13]=;56

void

solve()

716 printf("

%d\n

",res);17}

18int

main()

19

思路2

NOIP2016普及組 回文日期

演算法標籤 列舉,模擬 題目描述 在日常生活中,通過年 月 日這三個要素可以表示出乙個唯一確定的日期。牛牛習慣用 8 位數字表示乙個日期,其中,前 4 位代表年份,接下來 2 位代表月份,最後 2 位代表日期。顯然 乙個日期只有一種表示方法,而兩個不同的日期的表示方法不會相同。牛牛認為,乙個日期是回...

NOIP 2016 回文日期

洛谷p2010 jdoj 3313 在日常生活中,通過年 月 日這三個要素可以表示出乙個唯一確定的日期。牛牛習慣用8位數字表示乙個日期,其中,前4位代表年份,接下來2位代表月 份,最後2位代表日期。顯然 乙個日期只有一種表示方法,而兩個不同的日期的表 示方法不會相同。牛牛認為,乙個日期是回文的,當且...

NOIP2016普及組 複賽 回文日期

題目自己點,複製過來會飛掉 這個題,當時想得太複雜,但沒想到竟然得了70分 真的不想說什麼 當時的思路 列舉每一天,然後開頭和末尾單獨處理,於是,洋洋灑灑寫了100多行。正確思路 列舉每一天 不要打我臉 當然方法不同,量也就50行,不難理解。第一步 輸入兩個int整數即可 因為只有8位 然後分離出它...