10分求条
查看原帖
10分求条
1228432
Rubedo_N楼主2024/12/12 16:41
#include<bits/stdc++.h>
using namespace std;
#define freopen_s "a"
#define int long long
#define ull unsigned long long
#define rep1(i,x,y) for(register int i=(x);i<=(y);i++)
#define rep2(i,x,y) for(register int i=(x);i>=(y);i--)
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define writesp(x) write(x),putchar(' ')
#define writeln(x) write(x),putchar('\n')
#define sp putchar(' ')
#define ln putchar('\n')
#define SORT(a,n) sort((a)+1,(a)+1+(n)) 
#define SORT2(a,n) sort((a)+1,(a)+1+(n),cmp)
int read(){int x=0;bool p=0;char c=getchar();while(c<'0'||c>'9'){p=(c=='-'?1:p);c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return p?~(x-1):x;}
void write(int x){if(x<0){putchar('-');x=~(x-1);}if(x>9)write(x/10);putchar(x%10|48);}
void fre(){freopen(freopen_s,"r",stdin);freopen(freopen_s,"w",stdout);}
string s;
int n,ans,cnt,mo[]={0,31,28,31,30,31,30,31,31,30,31,30,31,29};
bool check_year(int y){if(y%4==0){if(y%100==0){if(y%400==0)return 1;return 0;}return 1;}return 0;}
bool check_prime(int x){if(x<2)return 0;rep1(i,2,x-1)if(x%i==0)return 0;return 1;}
bool check(string t){
	int day=t[8]+t[7]*10,month=t[6]+t[5]*10,year=t[4]+t[3]*10+t[2]*100+t#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int mx=1e5+10;
int n,m;
struct T{
    int l,r;        //每个同学的“左右手” 
	int d;          //表示同学是否输出 
}t[mx]={0};
void add(int i,int k,int f)       //新增同学 
{
    if(f==1)         //左 
    {
        t[k].r=t[i].r;
        t[k].l=i; 
        t[i].r=k;
        t[t[k].r].l=k;
    }
    else             //右 
    {
        t[k].r=i;
        t[k].l=t[i].l;
        t[i].l=k;
        t[t[k].l].r=k;
    }
}
int main()
{
    int x,k,f;
    cin>>n;
    t[0].r=0,t[0].l=0;
    add(0,1,1);
    for (int i=2;i<=n;i++)
    {
        cin>>x>>f;
        add(x,i,f);
    }
    cin>>m;
    while(m--)
    {
        cin>>x;
        t[x].d=1;         //将该同学标记为不输出 
    }
    for (int i=t[0].r;i;i=t[i].r)
    {
        if (t[i].d==0)    //输出未标记的 
          cout<<i<<" ";
    }
    return 0;
}[3]*1000;
	if(month>=13)return 0;
	if(day>=32)return 0;
	if((month==4||month==6||month==9||month==11)&&day==31)return 0;
	if(month==2&&day==30)return 0;
	if(month==2&&!check_year(year)&&day==29)return 0;
	int x=(t[7]-'0')*10+(t[8]-'0');
	if(!check_prime(x))return 0;
	x+=(t[5]-'0')*1000+(t[6]-'0')*100;
	if(!check_prime(x))return 0;
	x+=(t[1]-'0')*10000000+(t[2]-'0')*1000000+(t[3]-'0')*100000+(t[4]-'0')*10000;
	if(!check_prime(x))return 0;
	return 1;
}
void dfs(int x,string t){
	if(x==9){
		if(check(t))ans++;
		return ;
	}
	if(s[x]=='-'){
		for(char i='0';i<='9';i++){
			t[x]==i;
			dfs(x+1,t);
		}
	}
}
void solve(){
	cin>>s;
	if(s=="--------"){writeln(55157);return;}
	n=s.size(),cnt=0,ans=0,s=' '+s;
	rep1(i,1,n)if(s[i]=='-')cnt++;
	if(cnt==0){writeln(0);return;}
	dfs(1,s);
	writeln(ans);
}
signed main(){
	int T=read();
	while(T--)solve();
	return 0;
}
2024/12/12 16:41
加载中...