54188的专属题解

牛浩宇  •  1个月前


include

include

using namespace std;

int b[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};

int c[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};

void nhy(string a, int mod) {

if (a[17] == c[mod])
	cout << 'T' << endl;
else {
	a[17] = c[mod];
	cout << a << endl;
}

}

int main() {

int n;
cin >> n;
for (int i = 0; i < n; i++) {
	string a;
	cin >> a;
	int sum = 0;
	for (int j = 0; j < 17; j++) {
		sum += (a[j] - '0') * b[j];
	}
	int mod = sum % 11;
	int y = 0, m = 0, d = 0;
	for (int j = 6; j <= 9; j++) {
		y = y * 10 + (a[j] - '0');
	}
	m = (a[10] - '0') * 10 + (a[11] - '0');
	d = (a[12] - '0') * 10 + (a[13] - '0');
	bool flage = false;
	if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
		flage = true;
	}
	if (y >= 1980 && y <= 2006) {
		if (m >= 1 && m <= 12) {
			if (flage && m == 2) {
				if (d >= 1 && d <= 29)
					nhy(a, mod);
				else
					cout << 'D' << endl;
			} else {
				if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
					if (d >= 1 && d <= 31) {
						nhy(a, mod);
					} else {
						cout << 'D' << endl;
					}
				} else if (m == 4 || m == 6 || m == 9 || m == 11) {
					if (d >= 1 && d <= 30)
						nhy(a, mod);
					else
						cout << 'D' << endl;
				} else if (m == 2) {
					if (d >= 1 && d <= 28)
						nhy(a, mod);
					else
						cout << 'D' << endl;
				}
			}
		} else
			cout << 'M' << endl;
	} else
		cout << 'Y' << endl;
}
return 0;

}


评论:

请先登录,才能进行评论