CodeForces - 260 - BAncient Prophesy(暴力)
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(暴力)相关推荐
- CodeForces - 260B Ancient Prophesy
CodeForces - 260B Ancient Prophesy A recently found Ancient Prophesy is believed to contain the exac ...
- codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]
A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...
- CodeForces - 1553E Permutation Shift(暴力+置换群求环)
题目链接:点击查看 题目大意:假设初始时的数组为 [1,2,3,...,n][1,2,3,...,n][1,2,3,...,n],同时 kkk 为偏移量,则原数组会循环右移 kkk 个单位,假设 k= ...
- Codeforces Gym 100418K Cards 暴力打表
Cards Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- Codeforces 993A. Two Squares(暴力求解)
解题思路(暴力解法) 平行于x轴的正方形和与x轴成45度倾斜的正方形相交的点中必定有整数点.即若两正方形相交,必定存在整数i,j,使(i,j)同时属于两个正方形. 我们把两个正方形中的整数点都找出来, ...
- CodeForces - 1551F Equidistant Vertices(暴力+dp)
题目链接:点击查看 题目大意:给出一棵 nnn 个节点组成的树,问选出 kkk 个节点满足相互之间距离相等的方案数有多少 题目分析:n=100n=100n=100,感觉数据范围越小的题目越难发现 ta ...
- CodeForces - 1311D Three Integers(暴力)
题目链接:点击查看 题目大意:给出三个数 a , b , c ,每次操作可以挑选任意一个数让其加一或减一,现在问最少需要操作多少次,可以使得: a 可以整除 b b 可以整除 c 题目分析:乍一看是一 ...
- CodeForces - 1141D Colored Boots(暴力+水题)
题目链接:点击查看 题目大意:给出两个字符串s和t,两个字符串中相同的字母可以匹配,问号可以和任意字符匹配,现在问两个字符串最多能匹配多少个字符,并给出匹配的下标 题目分析:挺好玩的一道水题,大体思路 ...
- Codeforces 260B - Ancient Prophesy
260B - Ancient Prophesy 思路:字符串处理,把符合条件的答案放进map里,用string类中的substr()函数会简单一些,map中的值可以边加边记录答案,可以省略迭代器访问部 ...
最新文章
- Python 之 Numpy (六)分割
- eclipse启动tomcat遇到404错误
- DockerCompose-初始Compose
- php 数字或者字符串补全
- MLSQL解决了什么问题
- linux 6.4 安装oracle10g,Red Hat Linux 6.4 安装 Oracle 10g 及问题解决
- AIX系统 topas查看系统各项指标性能
- android音乐播放器flac,五款Android手机FLAC,APE无损音乐播放器
- 微信文章互阅python脚本,一天可刷120分
- Ureport2报表工具金额格式化
- 树莓派I2C通过Shell操作FDC2214
- 最详细的 UART协议 分析在这里!
- @Column中的length属性和@Size和@length区别
- Linux上创建和更改硬链接和符号链接(软连接)
- EPICS ‘makeBaseApp’ IOC
- 《C游记》 第二章 - 初识分支句 循环助本心(壹)
- html中怎样写css路径,CSS 书写位置
- 西门子博图指令(定时器操作三)
- 朴素贝叶斯的三个常用模型:高斯(GaussianNB)、多项式(multinomial model)、伯努利(Bernoulli model)
- Mysql数据库异地备份解决方案
热门文章
- 数字前端后端的区别、以及流程简介
- 关于java实现十进制转换为任意进制
- 写一个学汉语拼音的小程序
- 深度学习中常见的图像处理任务
- 2020年1024活动Top50的博主名单总结分析,请为你喜欢的博主打Call!(精选文章整合)
- 传5G版iPhone SE将配双镜头摄像头并配备更大屏幕
- C++对象模型探索--02对象
- [Microsoft] [ODBC驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3:不能连接
- 嘴上的“用户思维”,心中的“流量思维”
- json序列化按顺序输出