题解 | #[NOIP2016]回文日期#

[NOIP2016]回文日期

https://ac.nowcoder.com/acm/problem/16438

思路:从第一个日期年份开始枚举到第二个日期的年份,即for(int i=a/10000;i<=b/10000;i++);然后判断这一年当中是否存在一个日期是和年份互为回文数。

```#include <bits/stdc++.h>
using namespace std;
int a,b;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void checkyear(int n)//判断二月份有几天,是否闰年
{
    if((n%4==0&&n%100!=0)||n%400==0)
        month[2]=29;
    else month[2]=28;
}
int hw(int n)//求月份和日期的回文数
{
    int s=0;
    while(n!=0)
    {
        s=s*10+n%10;
        n/=10;
    }
    return s;
}
int main()
{
    cin>>a>>b;
    int cnt=0;
    for(int i=a/10000;i<=b/10000;i++)
    {
        checkyear(i);
        int m=hw(i%100);//求月份的回文数
        if(i%100<10)m*=10;//如果年份后两位是01到09,进过回文函数处理之后还是1到9
        //所以这里要乘于10;年份第一位一定不为0,日期不用处理
        int d=hw(i/100);
        if(m>0&&m<=12&&d>0&&d<=month[m])//判断月份和日期是否满足
        {
            int f=i*10000+m*100+d;//这两行判断8位数的日期是否是在输入的两个日期之间
            if(f>=a&&f<=b)
            {
                cnt++;
            }
        }
    }
    cout<<cnt;
}
全部评论

相关推荐

06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务