在自己机子上面跑也没有什么问题啊?
#include<cstdio>
int day[20]={0,31,28,31,30,31,30,31,31,30,31,30,31,37};
int p[20]={0,3,5,7,11,13,17,19,23,29,31};
int chec[66666],pd=0;
int is_prime(int x) {
for(int i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
int ru(int x) {
if( (x%4==0&&x%100!=0)||x%400==0)
return 1;
return 0;
}
int main() {
int t;
scanf("%d",&t);
int tmp_day[2000];
int ttday=0;
int i,j;
for(i=1;i<=12;i++) {
for(j=1;p[j]<=day[i];j++) {
if( is_prime( i*100+p[j] ) )
tmp_day[++ttday]=i*100+p[j];
}
}
for(i=1;i<=9999;i++) {
if(ru(i)) {
if( is_prime(i*10000+229) )
chec[++pd]=i*10000+229;
}
for(j=1;j<=ttday;j++)
if( is_prime( i*10000+tmp_day[j] ) )
chec[++pd]=i*10000+tmp_day[j];
}
// printf("QwQ\n");
char s[20];
while(t--) {
scanf("%s",s+1);
int ans=0;
for(i=1;i<=pd;i++) {
int flag=1;
int now=chec[i];
for(j=8;j>=1;j--) {
if(s[j]=='-')
continue;
if(s[j]-'0'!=now%10 ) {
flag=0;
break;
}
now/=10;
}
ans+=flag;
}
printf("%d\n",ans);
}
return 0;
}