rt,悬赏关注
#include <bits/stdc++.h>
using namespace std;
int t,ans=0;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
string s;
bool is_prime(int x){
if(x<=1){
return false;
}
for(int i=2;i*i<=x;i++){
if(x%i==0){
return false;
}
}
return true;
}
bool check(string a){
int day=(a[6]-'0')*10+(a[7]-'0');
int month=(a[4]-'0')*1000+(a[5]-'0')*100+day;
int year=(a[0]-'0')*1e7+(a[1]-'0')*1e6+(a[2]-'0')*1e5+(a[3]-'0')*1e4+month;
if(is_prime(day) && is_prime(month) && is_prime(year)){
int rday=day,rmonth=(a[4]-'0')*10+(a[5]-'0'),ryear=(a[0]-'0')*1000+(a[1]-'0')*100+(a[2]-'0')*10+(a[3]-'0');
//cout<<rday<<' '<<rmonth<<' '<<ryear<<endl;
if(ryear>=1 && ryear<=9999){
if(rmonth>=1 && rmonth<=12){
if(ryear%4==0 && ryear%100!=0 || ryear%400==0){
days[2]=29;
}
if(rday>=2 && rday<=days[rmonth]){
return true;
}
}
}
}
return false;
}
void dfs(int step){
if(step>7){
if(check(s)){
//cout<<s<<endl;
ans++;
}
return ;
}
if(s[step]!='-'){
dfs(step+1);
}
else{
for(int i=0;i<=9;i++){
s[step]=('0'+i);
dfs(step+1);
s[step]='-';
}
}
}
int main(){
cin>>t;
while(t--){
ans=0;
cin>>s;
dfs(0);
cout<<ans<<'\n';
}
return 0;
}