1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| #include<iostream> #include<string> #include<algorithm> #include<vector> using namespace std;
int dom[15]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,0}; int pro[700],nt,ct=0;
void check(int y){ if(y%400==0 || (y%4==0 && y%100!=0)){ dom[2]=29; }else dom[2]=28; }
void isv(int a){ string s; int b=a; while(a>0){ s+=char(a%10+'0'); a/=10; } for(int i=0;i<=s.size()/2;i++){ if(s[i]!=s[s.size()-1-i]){ return; } } pro[nt++]=b; return; }
int main(){ ios::sync_with_stdio(0);cin.tie(0);
int n; cin>>n; while(n--){ int y; nt=ct=0; cin>>y; check(y); for(int i=1;i<=12;i++){ int tmp=i; for(int j=1;j<=dom[i];j++){ if(i<10){ if(j<10){ isv(y*100+i*10+j); isv(y*1000+i*10+j); isv(y*1000+i*100+j); isv(y*10000+i*100+j); }else{ isv(y*1000+i*100+j); isv(y*10000+i*100+j); } }else{ if(j<10){ isv(y*1000+i*10+j); isv(y*10000+i*100+j); }else{ isv(y*10000+i*100+j); } } } i=tmp; } cout<<nt<<" "; sort(pro,pro+nt); for(int i=0;i<nt;i++){ cout<<pro[i]<<" "; } cout<<"\n"; } return 0; }
|