赞
踩
顺子日期
问题描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456等。顺子日期指的就是在日期的yyyymmdd表示法中,存在任意连续的三位数是一个顺子的日期。例如20220123就是一个顺子日期,因为它出现了一个顺子:123;而20221023则不是一个顺子日期,它一个顺子也没有。小明想知道在整个2022年份中,一共有多少个顺子日期? 运行限制 ·最大运行时间:1s ·最大运行内存:512M
yyyymmdd
格式中,寻找包含至少一个顺子的日期数量,其中顺子为连续的三个数字(如123、456)。- #include <iostream>
- #include <string>
- #include <algorithm>
-
- // 定义每个月的天数,不考虑闰年情况
- int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-
- // 将数字转换为两位数的字符串
- std::string to_two_digits(int num) {
- if(num < 10) return "0" + std::to_string(num);
- return std::to_string(num);
- }
-
- // 检查字符串中是否包含顺子
- bool contains_sequence(const std::string& date) {
- return date.find("012") != std::string::npos || date.find("123") != std::string::npos;
- }
-
- int main() {
- int sequence_dates_count = 0;
- for(int month = 1; month <= 12; ++month) {
- for(int day = 1; day <= days_in_month[month]; ++day) {
- std::string date = "2022" + to_two_digits(month) + to_two_digits(day);
- if(contains_sequence(date)) {
- ++sequence_dates_count;
- }
- }
- }
- std::cout << "顺子日期总数: " << sequence_dates_count << std::endl;
- return 0;
- }
yyyymmdd
表示法中出现。- #include <bits/stdc++.h>
- using namespace std;
-
- int nums[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-
- string To_string(int x) {
- string s;
- while(x) {
- s += x % 10 + '0';
- x /= 10;
- }
- reverse(s.begin(), s.end());
- return s;
- }
-
- bool check(int year, int month, int day) {
- string s = To_string(year);
- if(month < 10) s += "0";
- s += To_string(month);
- if(day < 10) s += "0";
- s += To_string(day);
- return (s.find("123") != string::npos) || (s.find("012") != string::npos);
- }
-
- int main() {
- int ans = 0;
- for(int month = 1; month <= 12; month++) {
- for(int day = 1; day <= nums[month]; day++) {
- if(check(2022, month, day)) ans++;
- }
- }
- cout << ans << endl;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。