1. 程式人生 > >【NOIP2016】迴文日期

【NOIP2016】迴文日期

題目描述

在日常生活中,通過年、月、日這三個要素可以表示出一個唯一確定的日期。牛牛習慣用8位數字表示一個日期,其中,前4位代表年份,接下來2位代表月 份,最後2位代表日期。顯然:一個日期只有一種表示方法,而兩個不同的日期的表 示方法不會相同。牛牛認為,一個日期是迴文的,當且僅當表示這個日期的8位數字是迴文的。現 在,牛牛想知道:在他指定的兩個日期之間包含這兩個日期本身),有多少個真實存 在的日期是迴文的。一個8位數字是迴文的,當且僅當對於所有的i ( 1 <=i<= 8 )從左向右數的第i個 數字和第9-i個數字(即從右向左數的第i個數字)是相同的。

例如:

•對於2016年11月19日,用8位數字20161119表示,它不是迴文的。

•對於2010年1月2日,用8位數字20100102表示,它是迴文的。

•對於2010年10月2日,用8位數字20101002表示,它不是迴文的。

每一年中都有12個月份:

其中,1、3、5、7、8、10、12月每個月有31天;4、6、9、11月每個月有30天;而對於2月,閏年時有29天,平年時有28天。

一個年份是閏年當且僅當它滿足下列兩種情況其中的一種:

1.這個年份是4的整數倍,但不是100的整數倍;

2.這個年份是400的整數倍。

例如:

•以下幾個年份都是閏年:2000、2012、2016。

•以下幾個年份是平年:1900、2011、2014。

輸入格式:

輸入包括兩行,每行包括一個8位數字。第一行表示牛牛指定的起始日期。第二行表示牛牛指定的終止日期。保證date_i和都是真實存在的日期,且年份部分一定為4位數字,且首位數字不為0。

保證date1 —定不晚於date2。

輸出格式:

輸出一行,包含一個整數,表示在date1和date2之間,有多少個日期是迴文的。

樣例1輸入:

20110101

20111231

樣例1輸出:

1

樣例2輸入:

20000101

20101231

樣例2輸出:

2

【樣例說明】 對於樣例1,符合條件的日期是20111102。 對於樣例2,符合條件的日期是20011002和20100102。 【子任務】 對於60%的資料,滿足date1 = date2。 ------------------------------------------------------------------------- 這本是一道比較簡單的題。但由於我考試時把程式碼寫複雜了,結果測民間時只得了60分(實際上就是可以騙的那一部分) 後來一想,可以不用對字串本身進行處理,我們可以將給定的數字拆成年月日的形式,之後的實現就簡單多了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

相關推薦

NOIP2016日期

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

LeetCode dp 系列

以下幾題: Leetcode 9. Palindrome Number 給定一個數字,判斷數字是否為迴文數字。 Determine whether an integer is a palindrome. An integer is a palind

演算法筆記 — 字串

  題目連結:http://www.codeup.cn/problem.php?cid=100000580&pid=8 題目描述 讀入一串字元,判斷是否是迴文串。“迴文串”是一個正讀和反讀都一樣的字串,比如“level”或者“noon”等等就是迴文串。 輸入

LeetCode

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴

APIO2014串(自動機)

傳送門 迴文自動機簡單題 因為不想學字尾自動機做法,於是去大概把迴文自動機學了 感覺比字尾自動機簡單多了啊 很顯然就是 f a

leetcode連結串列(Palindrome Linked List)python三種方法

題目連結 時間複雜度O(N),空間複雜度O(N) class ListNode: def __init__(self, x): self.val = x se

APIO2014串 jzoj 3654/洛谷 3649/bzoj 3676 樹(自動機)

題目 考慮一個只包含小寫拉丁字母的符串 s。我們定義 s的一個子串 t的“出現值”為 t在 s中的出現次數乘以t的長度。 請你求出s的所有迴文子串中的最大出現值。 分析 迴文樹(迴文自動機)模板題 迴文樹連結———連結 還有後綴自動機的寫法,但是我

DP的最小分割數

題目描述 Given a string s, partition s such that every substring of the partition is a palindrome. Retur

蘑菇街

題目描述 給定一個字串,問是否能通過新增一個字母將其變為迴文串。 輸入描述: 一行一個由小寫字母構成的字串,字串長度小於等於10。 輸出描述: 輸出答案(YES\NO). 示例1 輸入 複製 coco 輸出 複製 YES #include "std

LeetCode 9

題目 判斷一個整數是否是迴文數。 迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 輸入: 121 輸出: true 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。 輸

每日leetcode

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解

最長子序列hihocoder1032 C++

問題描述 Time Limit:1000ms Case Time Limit:1000ms Memory Limit:256MB 小Hi和小Ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。

HDU4745 Two Rabbits最長子序列 區間DP

Two Rabbits Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 2479    Accepted Su

2018.12.20APIO2014BZOJ3676洛谷P3649串(自動機PAM)

BZOJ傳送門 洛谷傳送門 解析: PAM裸題,當然SAM也可以做。 先建立出PAM,同時每次更新last節點的cnt,然後再在fail樹上一路向上跳同時上傳cnt就行了。 程式碼: #include<bits/stdc++.h> usin

動態規劃 串13LeetCode 647. Palindromic Substrings

LeetCode 647. Palindromic Substrings Solution1:我的答案 動態規劃,易解 class Solution { public: int count

2019 1月集訓 Day1的字尾

題意:   給定 n,s,求有多少個字符集大小為 s ,長度為 n 的字串,使得其不存在一個長度大於 1 的迴文字尾。   答案對 m 取模。 分析:   考場見到計數題的鏈式反應,想寫暴力—>暴力難寫—>不會暴力—>棄療—>爆零。   今天考試也不例外。但是逐漸思想過於摸化

學習筆記自動機

依舊是後面再補上講解吧希望我不要忘記惹。。。。 本質是一顆trie,節點代表了迴文的一半; 自動機節點維護長度和最大回文字尾的fail指標; 奇數迴文的根長度為-1,編號1,偶數0,1;(編號是有藝術的) 插入沿著上一個點找是否有匹配的迴文; 注意如果要新建節點的話應該再找新建點的fail,繼續想上

Palindromic Tree——處理一類串問題的強力工具

今天我們來學習一個神奇的資料結構:Palindromic Tree。中譯過來就是——迴文樹。 那麼這個迴文樹有何功能? 假設我們有一個串S,S下標從0開始,則迴文樹能做到如下幾點: 1.求串S字首0~

藍橋杯數字

#include <iostream> #include <algorithm> #include <vector> #include <sstream> #include <math.h> using

清華集訓2017模擬12.10串(樹+樹鏈剖分)

Description: NYG 很喜歡研究迴文串問題,有一天他想到了這樣一個問題: 給出一個字串 S,現在有 4 種操作: • addl c :在當前字串的左端加入字元 c; • addr c :在當前字串的右端加入字元 c; • transl l