help me!!!!(all WA)
查看原帖
help me!!!!(all WA)
937537
ldll0721楼主2024/8/16 18:55
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
int T, mon[15] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
signed main() {
	//freopen("julian3.in","r",stdin);
	//freopen("1.out","w",stdout);
	cin >> T;
	while (T--) {
		int r, tian = 1, nian, pd = 0, cnt = 0, yue = 1;
		cin >> r;
		if (r <= 1721423) {
			tian += r % 1461;
			nian = r / 1461 * 4;
			for (int i = 1; i <= 4; i++) {
				int bj = 365;
				if (i == 1)bj = 366;
				if (tian < bj)break;
				else {
					tian -= bj;
					nian++;
					cnt++;
				}
			}
			if (cnt == 0)pd = 1;
			if (pd == 1)mon[2] = 29;
			else mon[2] = 28;
			for (int i = 1; i <= 12; i++) {
				if (tian >= mon[i]) {
					tian -= mon[i];
					yue++;
					if (yue == 13)yue = 1, nian++;
				} else {
					cout << tian << " " << yue << " " << 4713 - nian << " BC" << endl;
					break;
				}
			}
		} else {
			tian = r - 1721423;
			nian = 1;
			if (tian <= 577737) {
				nian += tian / 1461 * 4;
				tian %= 1461;
				for (int i = 1; i <= 4; i++) {
					int bj = 365;
					if (i == 4)bj = 366;
					if (tian < bj)break;
					else {
						tian -= bj;
						nian++;
						cnt++;
					}
				}
				if (cnt == 3)pd = 1;
				if (pd == 1)mon[2] = 29;
				else mon[2] = 28;
				for (int i = 1; i <= 12; i++) {
					if (tian > mon[i]) {
						tian -= mon[i];
						yue++;
						if (yue == 13)yue = 1, nian++;
					} else {
						cout << tian << " " << yue << " " << nian << endl;
						break;
					}
				}
			} else {
				nian = 1582;
				tian = 15, yue = 10;
				r -= (577737 + 1721423);
				if (r <= 78) {
					for (int i = 1; i <= 12; i++) {
						if (tian > mon[i]) {
							tian -= mon[i];
							yue++;
							if (yue == 13)yue = 1, nian++;
						} else {
							cout << tian << " " << yue << " " << nian << endl;
							break;
						}
					}
				} else {
					int pdd = 0;
					r -= 78;
					yue = 1, tian = 1;
					nian = r / 146097 * 400 + 1583;
					r %= 146097;
					//cout << nian << endl;
					for (int i = 1583; i <= 1983; i++) {
						int dq;
						if (i % 400 == 0)dq = 366;
						else if (i % 100 == 0)dq = 365;
						else if (i % 4 == 0)dq = 366;
						else dq = 365;
						if (r >= dq) {
							r -= dq;
							nian++;
						} else {
							if (dq == 366)pdd = 1;
							else pdd = 0;
						}
					}
					//cout<<nian<<endl;
					if (pdd == 1)mon[2] = 29;
					else mon[2] = 28;
					for (int i = 1; i <= 12; i++) {
						if (r > mon[i]) {
							r -= mon[i];
							yue++;
							if (yue == 13)yue = 1, nian++;
						} else {
							cout << r << " " << yue << " " << nian << endl;
							break;
						}
					}
				}
			}
		}
	}
	return 0;
}

2024/8/16 18:55
加载中...