社区讨论

90pts求条

P2010[NOIP 2016 普及组] 回文日期参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mjp4pdyh
此快照首次捕获于
2025/12/28 10:47
2 个月前
此快照最后确认于
2025/12/31 17:45
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
int l,r,c,n,ans;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool vis[N];
int main(){
    cin>>l>>r;
    int l1=l/10000,r1=r/10000;
    c=r1-l1;
    int month=0,day=0,end;
    for(int i=0;i<=c;i++){
        end=12;
        if(i==0) month=l/100%100;
        if(i==c) end=r/100%100;
        else month=1;
        for(int j=month;j<=end;j++){
            if((l1+i)%4==0&&(l1+i)%100||(l1+i)%400==0&&j==2) n=29;
            else n=m[j];
            if(i==0) day=l%100;
            if(i==c) n=r%100;
            else day=1;
            for(int k=day;k<=n;k++){
                int g=k%10,s=k/10,b=j%10,t=j/10;
                int y=g*1000+s*100+b*10+t;
                if(y>=l1&&y<=r1&&!vis[y-l1]){
                    ans++,vis[y-l1]=1;
                    //printf("%d %d %d\n",y,j,k);
                } 
            }
        }
    }
    cout<<ans;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...