当前位置: 首页 > news >正文

回文日期2

#include <bits/stdc++.h>
using namespace std;
bool huiwen(int date)
{
  int temp=date;
  int r=0;
  while(temp>0)
  {
    r=r*10+temp%10;
    temp/=10;

  }
  return date==r;
}

int main()
{
  // 请在此输入您的代码
  int n,m;
  cin>>n>>m;
  int tempf=n/100,tempe=m/100;
  int yearf=n/10000,monthf=tempf%100,dayf=n%100;
  int yeare=m/10000,monthe=tempe%100,daye=m%100;


  int f=0,sum=0;
  
  for(int year=yearf;year<=yeare;year++)
  for(int month=1;month<=12;month++)
  for(int day=1;day<=31;day++)
    {
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12);
        
        else if(month==2)
        {



          if(year%4==0&&year%100!=0||year%400==0)
          {
            if(day>29)break;

          }
          else
          {
            if(day>28)break;
          }


        }
        else{
          if(day>30)break;
        }
        if(year==yearf&&month==monthf&&day==dayf)
        {
          f=1;
          

        }
       int  date=year*10000+month*100+day;
        if(f==1&&huiwen(date))sum++;
        if(year==yeare&&month==monthe&&day==daye)
        {
          cout<<sum;
        }
      }
    
  


  return 0;
}

在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。

牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。

牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个真实存在的日期是回文的。

提示:

一个 8 位数字是回文的,当且仅当对于所有的 i (1≤i≤8)i (1≤i≤8) 从左向右数的第 ii 个数字和第 9 - ii 个数字(即从右向左数的第 ii 个数字)是相同的。

例如:

  1. 对于 2016 年 11 月 19 日,用 8 位数字 20161119 表示,它不是回文的。

  2. 对于 2010 年 1 月 2 日,用 8 位数字 20100102 表示,它是回文的。

  3. 对于 2010 年 10 月 2 日,用 8 位数字 20101002 表示,它不是回文的。

每一年中都有 12 个月份:

其中,1,3,5,7,8,10,12 月每个月有 31 天;4,6,9,11 月每个月有 30 天;而对于 2 月,闰年时有 29 天,平年时有 28 天。

一个年份是闰年当且仅当它满足下列两种情况其中的一种:

  1. 这个年份是 4 的整数倍,但不是 100 的整数倍;

  2. 这个年份是 400 的整数倍。

例如:

  1. 以下几个年份都是闰年:2000,2012,2016。

  2. 以下几个年份是平年:1900,2011,2014。

输入描述

输入两行,每行包括一个 8 位数字。

第一行表示牛牛指定的起始日期。

第二行表示牛牛指定的终止日期。

保证 dateidatei​ 和都是真实存在的日期,且年份部分一定为 4 位数字,且首位数字不为 0。

保证 date1date1​ 一定不晚于 date2date2​。

输出描述

输出一个整数,表示在 date1date1​ 和 date2date2​ 之间,有多少个日期是回文的。

输入输出样例

示例 1

输入

20110101
20111231

输出

1

示例 2

输入

20000101
20101231

输出

2

相关文章:

  • Process Explorer 性能调优实战:精准定位资源泄漏与高负载进程
  • ZYNQ笔记(五):AXI GPIO 中断
  • C++指针(四)万字图文详解!
  • 【特权FPGA】之乘法器
  • P8623 [蓝桥杯 2015 省 B] 移动距离
  • go学习记录(第一天)
  • 一、TorchRec里边的输入输出类型
  • 为什么要将函数变量化?
  • django rest framework相关面试题
  • windows+cmake+vscode+NDK远程调试安卓端C++项目
  • 回文日期1
  • 泛微ECOLOGY9 记 数据展现集成 自定义开窗测试中对SQL 的IN语法转换存在BUG
  • Linux中OS的管理和进程的概念
  • 【力扣hot100题】(087)乘积最大子数组
  • LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, 字符集转码/字符集探测
  • IO流——字节输入输出流:FileInputStream FileOutputStream
  • 视频内容原数据获取接口开发指南
  • 直线模组过载使用会有什么效果?
  • 数据驱动的温暖守护:智慧康养平台如何实现 “千人千面” 的精准照护?
  • Python 根据多个下标向列表中插入对应的值的巧妙方法:逆序插入
  • 做旅游去哪个网站找图/行业关键词查询
  • vs2012解决方案做网站/关键词推广优化app
  • 网站建设与维护结课论文/厦门seo顾问屈兴东
  • 网站正在建设中 给你带来/百度seo外链推广教程
  • 做个网站要钱吗/论坛seo教程
  • 设计兼职接单平台/专业百度seo排名优化