快捷搜索: 王者荣耀 脱发

第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
",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;
}

我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水~字~数~啦!

经验分享 程序员 微信小程序 职场和发展