A recently found Ancient Prophesy is believed to contain the exact Apocalypse date. The prophesy is a string that only consists of digits and characters “-”.

We’ll say that some date is mentioned in the Prophesy if there is a substring in the Prophesy that is the date’s record in the format “dd-mm-yyyy”. We’ll say that the number of the date’s occurrences is the number of such substrings in the Prophesy. For example, the Prophesy “0012-10-2012-10-2012” mentions date 12-10-2012 twice (first time as “0012-10-2012-10-2012”, second time as “0012-10-2012-10-2012”).

The date of the Apocalypse is such correct date that the number of times it is mentioned in the Prophesy is strictly larger than that of any other correct date.

A date is correct if the year lies in the range from 2013 to 2015, the month is from 1 to 12, and the number of the day is strictly more than a zero and doesn’t exceed the number of days in the current month. Note that a date is written in the format “dd-mm-yyyy”, that means that leading zeroes may be added to the numbers of the months or days if needed. In other words, date “1-1-2013” isn’t recorded in the format “dd-mm-yyyy”, and date “01-01-2013” is recorded in it.

Notice, that any year between 2013 and 2015 is not a leap year.

Input
The first line contains the Prophesy: a non-empty string that only consists of digits and characters “-”. The length of the Prophesy doesn’t exceed 105 characters.

Output
In a single line print the date of the Apocalypse. It is guaranteed that such date exists and is unique.

Examples
Input
777-444—21-12-2013-12-2013-12-2013—444-777
Output
13-12-2013
题目链接
参考题解
题目要求输出其中出现次数最多的13年到15年的日期。其中2013-12-2013可以看成20 13-12-2013,所以也出现了一个日期。

这个题目数据量1e5,直接每一位字符判断一下就可以了,看一下是否符合dd-mm-yyyy的条件,然后进一步判断年份是不是在13年到15年,判断一下月份,然后记录一下当前字符位置,这个年月出现多少次,记录年月的方法算是比较有意思。

#include <cstdio>
#include <cctype>
#include <cstring>
using namespace std;
char str[100005];
int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int cnt[4][16][32];int main()
{int d = -1, m = -1, y = -1, id, ansd = 0;scanf("%s", str);int len = strlen(str);for(int i = 0; i < len - 9; i++){//先判断是否是一个合法日期,isdigit()函数在头文件cctype中,是处理字符串的函数集合,isdigit()用来判断是否是一个数字//下面先判断是否符合格式dd-mm-yyyy不符合继续往后遍历if(isdigit(str[i]) && isdigit(str[i+1]) && isdigit(str[i+3]) && isdigit(str[i+4]) && isdigit(str[i+6]) && isdigit(str[i+7]) && isdigit(str[i+8]) && isdigit(str[i+9]) && str[i+2]=='-'&&str[i+5]=='-'){d=(str[i] - 48) * 10 + str[i + 1] - 48;m=(str[i + 3] - 48) * 10 + str[i + 4] - 48;y=(((str[i + 6] - 48) * 10 + str[i + 7] - 48) * 10 + str[i + 8] - 48) * 10 + str[i + 9] - 48;if(m > 12 || y < 2013 || y > 2015 || m < 1) continue;   //如果不是13年到15年或者是月份不对,那么跳过if(d > month[m] || d < 1)   continue;   //如果日期不是合法的跳过if(++cnt[y - 2013][m][d] > ansd) ansd = cnt[y - 2013][m][d], id = i;}}for(int i = 0; i < 10; i++)   putchar(str[id + i]);putchar('\n');return 0;
}

CodeForces - 260 - BAncient Prophesy(暴力)相关推荐

  1. CodeForces - 260B Ancient Prophesy

    CodeForces - 260B Ancient Prophesy A recently found Ancient Prophesy is believed to contain the exac ...

  2. codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]

    A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...

  3. CodeForces - 1553E Permutation Shift(暴力+置换群求环)

    题目链接:点击查看 题目大意:假设初始时的数组为 [1,2,3,...,n][1,2,3,...,n][1,2,3,...,n],同时 kkk 为偏移量,则原数组会循环右移 kkk 个单位,假设 k= ...

  4. Codeforces Gym 100418K Cards 暴力打表

    Cards Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  5. Codeforces 993A. Two Squares(暴力求解)

    解题思路(暴力解法) 平行于x轴的正方形和与x轴成45度倾斜的正方形相交的点中必定有整数点.即若两正方形相交,必定存在整数i,j,使(i,j)同时属于两个正方形. 我们把两个正方形中的整数点都找出来, ...

  6. CodeForces - 1551F Equidistant Vertices(暴力+dp)

    题目链接:点击查看 题目大意:给出一棵 nnn 个节点组成的树,问选出 kkk 个节点满足相互之间距离相等的方案数有多少 题目分析:n=100n=100n=100,感觉数据范围越小的题目越难发现 ta ...

  7. CodeForces - 1311D Three Integers(暴力)

    题目链接:点击查看 题目大意:给出三个数 a , b , c ,每次操作可以挑选任意一个数让其加一或减一,现在问最少需要操作多少次,可以使得: a 可以整除 b b 可以整除 c 题目分析:乍一看是一 ...

  8. CodeForces - 1141D Colored Boots(暴力+水题)

    题目链接:点击查看 题目大意:给出两个字符串s和t,两个字符串中相同的字母可以匹配,问号可以和任意字符匹配,现在问两个字符串最多能匹配多少个字符,并给出匹配的下标 题目分析:挺好玩的一道水题,大体思路 ...

  9. Codeforces 260B - Ancient Prophesy

    260B - Ancient Prophesy 思路:字符串处理,把符合条件的答案放进map里,用string类中的substr()函数会简单一些,map中的值可以边加边记录答案,可以省略迭代器访问部 ...

最新文章

  1. Python 之 Numpy (六)分割
  2. eclipse启动tomcat遇到404错误
  3. DockerCompose-初始Compose
  4. php 数字或者字符串补全
  5. MLSQL解决了什么问题
  6. linux 6.4 安装oracle10g,Red Hat Linux 6.4 安装 Oracle 10g 及问题解决
  7. AIX系统 topas查看系统各项指标性能
  8. android音乐播放器flac,五款Android手机FLAC,APE无损音乐播放器
  9. 微信文章互阅python脚本,一天可刷120分
  10. Ureport2报表工具金额格式化
  11. 树莓派I2C通过Shell操作FDC2214
  12. 最详细的 UART协议 分析在这里!
  13. @Column中的length属性和@Size和@length区别
  14. Linux上创建和更改硬链接和符号链接(软连接)
  15. EPICS ‘makeBaseApp’ IOC
  16. 《C游记》 第二章 - 初识分支句 循环助本心(壹)
  17. html中怎样写css路径,CSS 书写位置
  18. 西门子博图指令(定时器操作三)
  19. 朴素贝叶斯的三个常用模型:高斯(GaussianNB)、多项式(multinomial model)、伯努利(Bernoulli model)
  20. Mysql数据库异地备份解决方案

热门文章

  1. 数字前端后端的区别、以及流程简介
  2. 关于java实现十进制转换为任意进制
  3. 写一个学汉语拼音的小程序
  4. 深度学习中常见的图像处理任务
  5. 2020年1024活动Top50的博主名单总结分析,请为你喜欢的博主打Call!(精选文章整合)
  6. 传5G版iPhone SE将配双镜头摄像头并配备更大屏幕
  7. C++对象模型探索--02对象
  8. [Microsoft] [ODBC驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3:不能连接
  9. 嘴上的“用户思维”,心中的“流量思维”
  10. json序列化按顺序输出