WA #2
查看原帖
WA #2
1015378
a18863696128楼主2023/8/7 23:24
#include<bits/stdc++.h>
using namespace std;
int is(int y,int m,int d){
	int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	if(y>=60&&y<=99){
		y=y+1900;
	}
	else y=y+2000;
	if(y%4==0&&y%100!=0){
		day[2]++;
	}
	if(m>12||d>day[m])
	return 0;
	else return 1;
}
int main(){
	char s[8];
	int s1,s2;
	int a[4];
	a[0]=0;
	while(scanf("%s",&s)!=EOF) {
		s1=s[0];s2=s[1];
		a[1]=(s1-48)*10+s2-48;
		s1=s[3];s2=s[4];
		a[2]=(s1-48)*10+s2-48;
		s1=s[6];s2=s[7];
		a[3]=(s1-48)*10+s2-48;
		int y[4],m[4],d[4];
		for(int i=0;i<=3;i++){
			y[i]=0;m[i]=0;d[i]=0;
		}
		int i=1,j=2,k=3;
		if(is(a[i],a[j],a[k])){
			int y1=a[i];
			if(y1>=60&&y1<=99)y1=y1+1900;
			else y1=y1+2000;
			y[1]=y1;
			m[1]=a[j];
			d[1]=a[k];
		}
		i=3,j=1,k=2;
		if(is(a[i],a[j],a[k])){
			int y1=a[i];
			if(y1>=60&&y1<=99)y1=y1+1900;
			else y1=y1+2000;
			y[2]=y1;
			m[2]=a[j];
			d[2]=a[k];
		}
		i=3,j=2,k=1;
		if(is(a[i],a[j],a[k])){
			int y1=a[i];
			if(y1>=60&&y1<=99)y1=y1+1900;
			else y1=y1+2000;
			y[3]=y1;
			m[3]=a[j];
			d[3]=a[k];
		}
		int min;
		for(int i=1;i<=3;i++){
			min=3;
			for(int j=i;j<=3;j++){
				if(y[j]<y[min]||y[j]==y[min]&&m[j]<m[min]||y[j]==y[min]&&m[j]==m[min]&&d[j]<d[min]){
					min=j;
				}
			}
			int t1=y[i];int t2=m[i];int t3=d[i];
			y[i]=y[min];m[i]=m[min];d[i]=d[min];
			y[min]=t1;m[min]=t2;d[min]=t3;
		}
		for(int i=1;i<=3;i++){
			if(i>=2&&(y[i-1]==y[i])&&(m[i-1]==m[i])&&(d[i-1]==d[i])){
				continue;
			}
			if(i==3&&y[i-2]==y[i]&&m[i-2]==m[i]&&d[i-2]==d[i]){
				continue;
			}
			if(m[i]==0||d[i]==0){
				continue; 
			}
			printf("%d-",y[i]);
			if(m[i]<=9)printf("0%d-",m[i]);
			else printf("%d-",m[i]);
			if(d[i]<=9)printf("0%d\n",d[i]);
			else printf("%d\n",d[i]);
		}
	}
}

为啥这个#2过不去提示WA

2023/8/7 23:24
加载中...