MLE,求助
查看原帖
MLE,求助
305013
orange_dream楼主2023/9/18 22:41
#include<bits/stdc++.h>
#define int long long
using namespace std;

int T,x,y,m,d;
int M[20]={0,31,28,31,30,31,30,31,31,30,31,30,31,30};

void read(int &x){
	x=0;
	int f=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9') 
		x=(x<<3)+(x<<1)+(c^48),c=getchar();
	x*=f;
}

void WRITE(int x){
	if (x==0)return;
	WRITE(x/10);
	putchar(x%10+'0');
}

void write(int x){
	if (x==0)putchar('0');
	else WRITE(x);
}

bool check2(int x){
	if (x>0)return ((x%4==0 && x%100!=0) || (x%400==0));
	else return check2(abs(x)-1);
}

bool check(int x){
	if (x>0)return x%4==0;
	else return check(abs(x)-1);
}

signed main(){
	read(T);
	while (T--){
		read(x);
		y=-4713,m=1,d=1;
		if (x<1721424){
			while (x>=((check(y))?(366):(365))){
				if (check(y)){
					x-=366;
				}else x-=365;
				if (x<0){
					if (check(y)){
						x+=366;
					}else x+=365;
					break;
				}
				y++;
			}
			if (check(y))M[2]++;
			for (int i=1;i<=12;i++){
				if (x>=M[i]){
					x-=M[i];
					m=i+1;
				}else break;
			}
			d+=x;
			write(d);putchar(' ');
			write(m);putchar(' ');
			write(abs(y));putchar(' ');
			putchar('B');putchar('C');
			putchar('\n');
			if (check(y))M[2]--;
		}else{
			if (x<1721424+577737){
				x-=1721424;
				y=1;
				y+=(x/(366+365+365+365)*4);
				x%=(366+365+365+365);
				while (x>=(check(y)?(366):(365))){
					if (check(y))x-=366;
					else x-=365;
					y++;
				}
				if (check(y))M[2]++;
				for (int i=1;i<=12;i++){
					if (x>=M[i]){
						x-=M[i];
						m=i+1;
					}else break;
				}
				d+=x;
				write(d);putchar(' ');
				write(m);putchar(' ');
				write(abs(y));putchar(' ');
				putchar('\n');
				if (check(y))M[2]--;
			}else{
				x-=1721424+577737;
				y=1582,m=10,d=14;
				if (x<=17){
					d+=x;
					write(d);putchar(' ');
					write(m);putchar(' ');
					write(abs(y));putchar(' ');
					putchar('\n');
					return 0;
				}
				x-=17;
				d=1;
				m++;
				if (x<30){
					write(d);putchar(' ');
					write(m);putchar(' ');
					write(abs(y));putchar(' ');
					putchar('\n');
					return 0;
				}
				x-=30;
				d=1;
				m++;
				if (x<31){
					write(d);putchar(' ');
					write(m);putchar(' ');
					write(abs(y));putchar(' ');
					putchar('\n');
					return 0;
				}
				x-=31;
				d=1;m=1;y++;
				y+=4000*(x/1460970);
				x%=1460970;
				y+=400*(x/146097);
				x%=146097;
				while(x>=((check2(y))?(366):(365))){
					if (check2(y))x-=366;
					else x-=365;
					y++;
				}
				if (check2(y))M[2]++;
				for (int i=1;i<=12;i++){
					if (x>=M[i]){
						x-=M[i];
						m=i+1;
					}else break;
				}
				d+=x;
				write(d);putchar(' ');
				write(m);putchar(' ');
				write(abs(y));putchar(' ');
				putchar('\n');
				if (check2(y))M[2]--;
			}
		}
	}
	return 0;
}

MLE了,有什么可以卡的吗

求助,thx

2023/9/18 22:41
加载中...