网站建设合同用缴印花税吗,世界杯直播 现场免费直播,thinkphp网站开发实战教程,网站太卡怎么优化日期问题
原题目链接
题目描述
小明正在整理一批历史文献。这些历史文献中出现了很多日期。
小明知道这些日期都在 1960 年 1 月 1 日 至 2059 年 12 月 31 日 之间。
令小明头疼的是#xff0c;这些日期采用的格式非常不统一#xff1a;
有的采用 年/月/日有的采用 月…日期问题
原题目链接
题目描述
小明正在整理一批历史文献。这些历史文献中出现了很多日期。
小明知道这些日期都在 1960 年 1 月 1 日 至 2059 年 12 月 31 日 之间。
令小明头疼的是这些日期采用的格式非常不统一
有的采用 年/月/日有的采用 月/日/年有的采用 日/月/年
更加麻烦的是年份省略了前两位例如
02/03/04它可能表示以下三种日期
2002 年 03 月 04 日 年/月/日2004 年 02 月 03 日 日/月/年2004 年 03 月 02 日 月/日/年 输入描述
一个日期字符串格式为 AA/BB/CC其中 0 ≤ A, B, C ≤ 9即每个字段均为两位数字。 输出描述
输出若干个不相同的有效日期在 1960-01-01 到 2059-12-31 范围内每个日期一行格式为
yyyy-MM-dd多个日期按从早到晚的时间顺序输出。 输入样例
02/03/04输出样例
2002-03-04
2004-02-03
2004-03-02c代码
#includebits/stdc.husing namespace std;int arr[] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
unordered_setstring st;void valid(string a, string b, string c) {string d 19;d a;int year stoi(d), key 0, month stoi(b), day stoi(c);if (year % 400 0 || (year % 100 ! 0 year % 4 0)) key 1;arr[2] key;if (year 1960 year 2059 month 1 month 12 day 1 day arr[month] st.find(d - b - c) st.end()) st.insert(d - b - c);arr[2] - key;d 20, d a, key 0, year stoi(d);if (year % 400 0 || (year % 100 ! 0 year % 4 0)) key 1;arr[2] key;if (year 1960 year 2059 month 1 month 12 day 1 day arr[month] st.find(d - b - c) st.end()) st.insert(d - b - c);arr[2] - key;
}int main() {string str, a, b, c;cin str;a str.substr(0, 2), b str.substr(3, 2), c str.substr(6, 2);valid(a, b, c), valid(c, a, b), valid(c, b, a);vectorstring ans;for (string s : st) ans.push_back(s);sort(ans.begin(), ans.end());for (string s : ans) cout s endl;return 0;
}//by wqs算法解析
注意这题需要判断闰年然后就是暴力模拟就行了。