RE求助
查看原帖
RE求助
512428
l9223372036854775808楼主2024/10/4 13:28

自测无错,但是开freopen后out文件没有输出,提交到洛谷后RE, 0分

#include <bits/stdc++.h>
using namespace std;
struct T{
	int y, m, d;
}nnooww;
int t;
long long r;
int dpm[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool isr(int y){
	if(y % 400 == 0) return 1;
	if(y%4 == 0 && y % 100 != 0) return 1;
	return 0;
}
bool isr2(int y){
	if(y < 0){
		y = -y-1;
	}
	return y%4==0;
}
bool pri(T nw){
	if(nw.y < 0) printf("%d %d %d BC\n", nw.d, nw.m, -nw.y);
	else printf("%d %d %d\n", nw.d, nw.m, nw.y);
}
int main(){
	freopen("julian1.in", "r", stdin);
	freopen("julian.out", "w", stdout);
	scanf("%d", &t);
	while(t--){
		nnooww = {-4713, 1, 1};
		scanf("%lld", &r);
		if(r <= 1721423){
			while(r){
				bool ifr = isr2(nnooww.y);
				int yd = (ifr?366:365);
				if(r >= yd){
					r -= yd;
					nnooww.y++;
					if(r == 0) break;
					continue;
				}
				int md = dpm[nnooww.m];
				if(nnooww.m == 2 && ifr) md++;
				if(r >= md){
					r -= md;
					nnooww.m++;
					if(nnooww.m > 12){
						nnooww.y++;
						nnooww.m = 1;
					}
					if(r == 0) break;
					continue;
				}
				nnooww.d++;
				r--;
				if(nnooww.d > md){
					nnooww.d = 1;
					nnooww.m++;
					if(nnooww.m > 12){
						nnooww.m = 1;
						nnooww.y++;
					}
				}
			}
			pri(nnooww);
			continue;
		}else if(r == 1721424){
			printf("1 1 1\n");
			continue;
		}
		if(r <= 2305447){
			r -= 1721424;
			nnooww = {1, 1, 1};
			while(nnooww.y != 1582 && r){
				bool ifr = isr2(nnooww.y);
				int yd = (ifr?366:365);
				if(r >= yd){
					r -= yd;
					nnooww.y++;
					if(r == 0) break;
					continue;
				}else break;
			}
			if(r == 0){
				pri(nnooww);
				continue;
			}
			if(nnooww.y != 1582){
				while(r){
					bool ifr = isr2(nnooww.y);
					int md = dpm[nnooww.m];
					if(nnooww.m == 2 && ifr) md++;
					if(r >= md){
						r -= md;
						nnooww.m++;
						if(nnooww.m > 12){
							nnooww.y++;
							nnooww.m = 1;
						}
						if(r == 0) break;
						continue;
					}
					nnooww.d++;
					r--;
					if(nnooww.d > md){
						nnooww.d = 1;
						nnooww.m++;
						if(nnooww.m > 12){
							nnooww.m = 1;
							nnooww.y++;
						}
					}
				}
				pri(nnooww);
				continue;
			}
			while(nnooww.m != 10 && r){
				bool ifr = isr2(nnooww.y);
				int md = dpm[nnooww.m];
				if(nnooww.m == 2 && ifr) md++;
				if(r >= md){
					r -= md;
					nnooww.m++;
					if(r == 0) break;
					continue;
				}else break;
			}
			if(r == 0){
				pri(nnooww);
				continue;
			}
			if(nnooww.m != 10){
				while(r){
					bool ifr = isr2(nnooww.y);
					int md = dpm[nnooww.m];
					if(nnooww.m == 2 && ifr) md++;
					nnooww.d++;
					r--;
					if(nnooww.d > md){
						nnooww.d = 1;
						nnooww.m++;
						if(nnooww.m > 12){
							nnooww.m = 1;
							nnooww.y++;
						}
					}
				}
				pri(nnooww);
				continue;
			}
			while(nnooww.d != 4 && r){
				bool ifr = isr2(nnooww.y);
				int md = dpm[nnooww.m];
				if(nnooww.m == 2 && ifr) md++;
				nnooww.d++;
				r--;
			}
			if(r == 0){
				pri(nnooww);
				continue;
			}
			r--;
			nnooww = {1582, 10, 15};
			if(r == 0){
				pri(nnooww);
				continue;
			}
			while(nnooww.y != 1599 && r){
				bool ifr = isr2(nnooww.y);
				int yd = (ifr?366:365);
				if(r >= yd){
					r -= yd;
					nnooww.y++;
					if(r == 0) break;
					continue;
				}else break;
			}
			if(r == 0){
				pri(nnooww);
				continue;
			}
			if(nnooww.y != 1600){
				while(r){
					bool ifr = isr(nnooww.y);
					int md = dpm[nnooww.m];
					if(nnooww.m == 2 && ifr) md++;
					if(r >= md){
						r -= md;
						nnooww.m++;
						if(nnooww.m > 12){
							nnooww.y++;
							nnooww.m = 1;
						}
						if(r == 0) break;
						continue;
					}
					nnooww.d++;
					r--;
					if(nnooww.d > md){
						nnooww.d = 1;
						nnooww.m++;
						if(nnooww.m > 12){
							nnooww.m = 1;
							nnooww.y++;
						}
					}
				}
				pri(nnooww);
				continue;
			}
			while(nnooww.m != 12 && r){
				bool ifr = isr(nnooww.y);
				int md = dpm[nnooww.m];
				if(nnooww.m == 2 && ifr) md++;
				if(r >= md){
					r -= md;
					nnooww.m++;
					if(r == 0) break;
					continue;
				}else break;
			}
			if(r == 0){
				pri(nnooww);
				continue;
			}
			if(nnooww.m != 12){
				while(r){
					bool ifr = isr(nnooww.y);
					int md = dpm[nnooww.m];
					if(nnooww.m == 2 && ifr) md++;
					nnooww.d++;
					r--;
					if(nnooww.d > md){
						nnooww.d = 1;
						nnooww.m++;
						if(nnooww.m > 12){
							nnooww.m = 1;
							nnooww.y++;
						}
					}
				}
				pri(nnooww);
				continue;
			}
			while(nnooww.d != 31 && r){
				bool ifr = isr(nnooww.y);
				int md = dpm[nnooww.m];
				if(nnooww.m == 2 && ifr) md++;
				nnooww.d++;
				r--;
			}
			if(r == 0){
				pri(nnooww);
				continue;
			}
			r--;
			nnooww = {1600,1,1};
			if(r == 0){
				pri(nnooww);
				continue;
			}
			while(r){
				if(r >= 13068825){
					r -= 13068825;
					nnooww.y += 400;
					if(r == 0) break;
				}
				bool ifr = isr2(nnooww.y);
				int yd = (ifr?366:365);
				if(r >= yd){
					r -= yd;
					nnooww.y++;
					if(r == 0) break;
					continue;
				}
				int md = dpm[nnooww.m];
				if(nnooww.m == 2 && ifr) md++;
				if(r >= md){
					r -= md;
					nnooww.m++;
					if(nnooww.m > 12){
						nnooww.y++;
						nnooww.m = 1;
					}
					if(r == 0) break;
					continue;
				}
				nnooww.d++;
				r--;
				if(nnooww.d > md){
					nnooww.d = 1;
					nnooww.m++;
					if(nnooww.m > 12){
						nnooww.m = 1;
						nnooww.y++;
					}
				}
			}
			pri(nnooww);
			continue;
		}
		r -= 2305448;
		nnooww = {1600, 1, 1};
		if(r == 0){
			pri(nnooww);
			continue;
		}
		int md = r%146097;
		nnooww.y += (r/146097)*400;
		r = md;
		while(r){
			bool ifr = isr(nnooww.y);
			int yd = (ifr?366:365);
			if(r >= yd){
				r -= yd;
				nnooww.y++;
				if(r == 0) break;
				continue;
			}
			int md = dpm[nnooww.m];
			if(nnooww.m == 2 && ifr) md++;
			if(r >= md){
				r -= md;
				nnooww.m++;
				if(nnooww.m > 12){
					nnooww.y++;
					nnooww.m = 1;
				}
				if(r == 0) break;
				continue;
			}else{
				nnooww.d += r;
				while(nnooww.d > md){
					nnooww.d -= md;
					nnooww.m++;
					if(nnooww.m > 12){
						nnooww.m = 1;
						nnooww.y++;
					}
					md = dpm[nnooww.m];
					if(nnooww.m == 2 && ifr) md++;
				}
				break;
			}
		}
		pri(nnooww);
	}
	return 0;
}
2024/10/4 13:28
加载中...