样例过了,但是它爆零了
查看原帖
样例过了,但是它爆零了
137723
pencil楼主2021/9/22 13:15
#include<iostream> 
using namespace std;
string a;
//int m[13]={0,1}
int kn=0,js=0,zhi[99999999];
bool su[99999999+10];
int qs(){
	int shu=0,i;
	for(i=0;i<8;i++){
		shu=shu*10+a[i]-'0';
	}
//	cout<<shu<<endl;
	return shu;
}
void ss(int wz,int yjs){
	for(int i=wz;i<8;i++){
		if(a[i]=='-'){
			int zz=9;
			if(i==4){
				if(a[5]-'0'<=2&&a[5]-'0'>=0)
				zz=1;
				else
				zz=0;
			} 
			if(i==5){
				if(a[4]-'0'==1)
				zz=2;
				else
				zz=9;
			}
			if(i==6){
				int mon=(a[4]-'0')*10+(a[5]-'0');
				if(mon!=2){
					if(((mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)&&(a[7]-'0'>=0&&a[7]-'0'<=1))||((mon==4||mon==6||mon==9||mon==11)&&(a[7]-'0'==0)))
				
				zz=3;
				else{
					bool flag=0;
					if(mon==2){
					int year=0;
					for(int y=1;y<=3;y++){
						year=year*10+a[y]-'0';
					}
					if(year%100){
						if(year%400)
						flag=1;
						else
						flag=0;
					}
					else
					flag=1;
				}
				if(flag&&(a[7]-'0'<=9))
				zz=2;
				else
				zz=1;
				}
				
				}
			}
			if(i==7){
				int mon=(a[4]-'0')*10+(a[5]-'0');
				if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
				zz=1;
				if(mon==4||mon==6||mon==9||mon==11)
				zz=0;
				if(mon==2){
					int year=0;
					for(int y=1;y<=3;y++){
						year=year*10+a[y]-'0';
					}
					if(year%100){
						if(year%400)
						zz=9;
						else
						zz=8;
					}
					else
					zz=9;
				}
			}
			for(int j=0;j<=zz;j++){
				a[i]=j+'0';
				ss(i+1,yjs+1);
				a[i]='-';
			}
			break;
		}
	}
	if(yjs==js){
		int ssr=qs();
		if(!su[ssr])
		kn++;
	}
}//xxxx xx xx
int main(){
	int n;
	cin>>n;
	zhi[1]=2;
	int idx=1;
	for(int i=2;i<99999999;i++){
		if(!su[i])zhi[idx++]=i;
		for(int i2=1;i*zhi[i2]<=99999999&&i2<=idx;i2++){
			su[i*zhi[i2]]=1;
			if(!(i%zhi[i2]))
			break;
		}
	}
	for(int i=1;i<=n;i++){
		cin>>a;
		kn=0;js=0;
		for(int j=1;j<8;j++){
			if(a[j]=='-')
			js++;
		}
		ss(0,0);
		cout<<kn<<endl;
	}
	return 0;
}
2021/9/22 13:15
加载中...