第14届蓝桥杯第三次模拟赛:3日期相等

简介: 第14届蓝桥杯第三次模拟赛:3日期相等

题目链接


题目描述:对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。请提交满足条件的日期的总数量


一些话

当小丑了,日期合法性里的||全都写成了&&,写错了也不知道,完全被oi赛制拿捏了

等到蓝桥杯正赛一定要重新审一遍代码,确保没有错误

切入点

请提交满足条件的日期的总数量

求满足性质的情况的数量,符合枚举的特征

流程

请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,


总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和


一共是要满足日期合法,在题目区间内,和数位数字和。三条性质


日期在题目区间内最好枚举,直接枚举19000101 - 99991231,提出年月日的数字判断就行

套路

日期合法性判断

int months[13] {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int year,int month,int day){
    if(!day || day > months[month] && month != 2) return false;
    if(!month || month > 12) return false;
    if(month == 2 && day > 28 + (year % 100 && year % 4== 0 || year % 400 == 0)) return false;
    return true;
}
in

数位提取

用/n来除去从右往左的ln n个数位,用%来保留从右往左的ln n个数位


ac代码

// 9:50~
// 当小丑了,日期合法性里的或者全都写成了并且
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 1e5 + 10;
int months[13] {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int year,int month,int day){
    if(!day || day > months[month] && month != 2) return false;
    if(!month || month > 12) return false;
    if(month == 2 && day > 28 + (year % 100 && year % 4== 0 || year % 400 == 0)) return false;
    return true;
}
int main(){
    int cnt = 0;
    for(int i = 19000101;i <= 99991231;i++){
        int year = i / 10000;
        int month = i % 10000 / 100;
        int day = i % 100;
        // if(i ==  19000101)printf("%d %d %d %d %d %d %d %d\n",year / 1000,year % 1000 / 100,year % 100 / 10 ,year % 10,month / 10 ,month % 10,day / 10 ,day % 10) ;
        if(check(year,month,day) && year/1000 + year % 1000 / 100 + year % 100 / 10 + year % 10 == month / 10 + month % 10 + day / 10 + day % 10)
        cnt ++;
    }
    cout << cnt ;
    return 0;
}
目录
相关文章
|
2天前
|
C++
第十三届蓝桥杯B组C++(试题B:顺子日期)
第十三届蓝桥杯B组C++(试题B:顺子日期)
53 0
|
10月前
【蓝桥杯冲刺】日期类专题特训
【蓝桥杯冲刺】日期类专题特训
33 0
|
11月前
|
机器学习/深度学习 测试技术
[蓝桥杯 2020 省 AB2] 回文日期
[蓝桥杯 2020 省 AB2] 回文日期
72 0
|
11月前
[蓝桥杯 2017 省 B] 日期问题
[蓝桥杯 2017 省 B] 日期问题
76 0
|
11月前
题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期
题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期
|
Java 测试技术 C语言
【蓝桥杯基础题】2020年省赛填空题—回文日期
【蓝桥杯基础题】2020年省赛填空题—回文日期
194 0
【蓝桥杯基础题】2020年省赛填空题—回文日期
|
Python
蓝桥杯 试题G 回文日期 Python 枚举法
蓝桥杯 试题G 回文日期 Python 枚举法
57 0
蓝桥杯 试题G 回文日期 Python 枚举法
|
Java 测试技术
第十一届蓝桥杯A组省赛试题 G: 回文日期(Java)
第十一届蓝桥杯A组省赛试题 G: 回文日期(Java)
224 0
|
Python
蓝桥杯 试题G 回文日期 Python 枚举法
蓝桥杯 试题G 回文日期 Python 枚举法
233 0
蓝桥杯 试题G 回文日期 Python 枚举法