P2010题解

Posted atlinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2010题解相关的知识,希望对你有一定的参考价值。

蒟蒻来这只是给各位大佬看看我鬼畜的码风的

#include<cstdio>
#include<string>
#include<iostream>
#include<cstdlib>
using namespace std;
string s1,s2;
int ans;
bool check(string s)
{
        int len=s.length()-1;
        for(int i=0;i<len/2;i++)
        {
                if(s[i]!=s[len-i]) return false;
        }
        return true;
}
int day1[13]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
int day2[13]={-1,31,29,31,30,31,30,31,31,30,31,30,31};
int main()
{
        cin >> s1 >> s2;
        if(s1==s2)
        {
                if(check(s1))  printf("1
");
                else printf("0
");
                exit(0);
        }
        int year1=0;
        for(int i=0;i<4;i++)
        {
                year1=year1*10+s1[i]-48;
        }
        int year2=0;
        for(int i=0;i<4;i++)
        {
                year2=year2*10+s2[i]-48;
        }
        int tt1=0,tt2=0;
        for(int i=4;i<=7;i++)
        {
                tt1=tt1*10+s1[i]-48;
                tt2=tt2*10+s2[i]-48;
        }
        int t1,t2,tmp;

        t1=year1%100;
        t2=year1/100;
        t1=t1%10*10+t1/10;
        t2=t2%10*10+t2/10;
        tmp=t1*100+t2;
        //cout << t1 <<" " << t2 << " " << tt1 << endl;
        if(t1>=1 && t1<=12 && tmp>=tt1)
        {
                if((year1%4==0 && year1%100!=0) || (year1%400==0))
                {
                        if(t2>day2[t1]);
                        else ans++;
                }
                else{
                        if(t2>day1[t1]);
                        else ans++;
                }
        }

        t1=year2%100;
        t2=year2/100;
        t1=t1%10*10+t1/10;
        t2=t2%10*10+t2/10;
        tmp=t1*100+t2;
       //      cout << t1 <<" " << t2 << " " << tt2 << endl;
        if(t1>=1 && t1<=12 && tmp<=tt2 && year1!=year2)
        {
                if((year2%4==0 && year2%100!=0) || (year2%400==0))
                {
                        if(t2>day2[t1] ) ;
                        else ans++;
                }
                else{
                        if(t2>day1[t1]) ;
                        else ans++;
                }
        }
        for(int year=year1+1;year<=year2-1;year++)
        {
                int mon=year%100;
                int day=year/100;
                mon=mon%10*10+mon/10;
                day=day%10*10+day/10;
                if(mon<1 || mon >12) continue;
                if(day <1 || day>31) continue;
                if((year%4==0  &&  year%100!=0) || year%400==0)
                {
                        if(day2[mon]<day) continue;
                        ans++;
                }
                else{
                        if(day1[mon]<day) continue;
                        ans++;
                }
        }
        printf("%d
",ans);
        return 0;
}

以上是关于P2010题解的主要内容,如果未能解决你的问题,请参考以下文章

洛谷 P2010 回文日期

Java 求解划分字母区间

oracle 中在添加分区中如果要在表的开始或中间的位置添加分区,怎么使用split语句,帮忙举个例子谢谢

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js