RE求助
查看原帖
RE求助
745337
liujunkang楼主2024/7/21 19:27

求助,本地结果正确,但是提交到洛谷上全部RE了,不知道是什么原因

#include<bits/stdc++.h>
using namespace std;


int p1, p2, p3;
char w[110];
char zhan[20000];

int lw, lzhan;

char c;

bool IsUpperLetter(char q) {
	return (q >= 'A' && q <= 'Z');
}

bool IsLowerLetter(char q) {
	return (q >= 'a' && q <= 'z');
}

bool IsLetter(char q) {
	return (IsUpperLetter(q) || IsLowerLetter(q));
}

bool IsShuzi(char q) {
	return (q >= '0' && q <= '9');
}

void TianChong(char x, char y) {
	if (p1 == 1 && p3 == 1) {
		if (IsLowerLetter(x) && IsLowerLetter(y)) {
			for (char t = x + 1; t < y; t++) {
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = t;
				}
			}
		}
		if (IsShuzi(x) && IsShuzi(y)) {
			for (char t = x + 1; t < y; t++) {
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = t;
				}
			}
		}
	}
	else if (p1 == 1 && p3 == 2) {
		if (IsLowerLetter(x) && IsLowerLetter(y)) {
			for (char t = y-1; t >x; t--) {
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = t;
				}
			}
		}
		if (IsShuzi(x) && IsShuzi(y)) {
			for (char t = y-1; t >x; t--) {
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = t;
				}
			}
		}
	}
	else if (p1 == 2 && p3 == 1) {
		if (IsLowerLetter(x) && IsLowerLetter(y)) {
			for (char t = x + 1; t < y; t++) {
				char tmp = toupper(t);
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = tmp;
				}
			}
		}
		if (IsShuzi(x) && IsShuzi(y)) {
			for (char t = x + 1; t < y; t++) {
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = t;
				}
			}
		}
	}
	else if (p1 == 2 && p3 == 2) {
		if (IsLowerLetter(x) && IsLowerLetter(y)) {
			for (char t = y-1; t >x; t--) {
				char tmp = toupper(t);
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = tmp;
				}
			}
		}
		if (IsShuzi(x) && IsShuzi(y)) {
			for (char t = y-1; t >x; t--) {
				for (int i = 0; i < p2; i++) {
					zhan[lzhan++] = t;
				}
			}
		}
	}
	else if (p1 == 3) {
		for (char t = x + 1; t < y; t++) {
			for (int i = 0; i < p2; i++) {
				zhan[lzhan++] = '*';
			}
		}
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	cin >> p1 >> p2 >> p3;

	c = getchar();
	while (c == '\n' || c == '\r') c = getchar();
	while (c != '\n' && c != '\r') {
		w[lw++] = c;
		c = getchar();
	}

	for (int i = 0; i < lw; i++) {
		if (w[i] != '-') {
			zhan[lzhan++] = w[i];
		}
		if (w[i] == '-') {
			if (w[i + 1] <= w[i - 1]) {
				zhan[lzhan++] = w[i];
				continue;
			}
			if (w[i + 1] == w[i - 1] + 1) {
				continue;
			}
			if (w[i + 1] > w[i - 1] && IsLowerLetter(w[i - 1]) && IsLowerLetter(w[i + 1])) {
				TianChong(w[i - 1], w[i + 1]);
			}
			if (w[i + 1] > w[i - 1] && IsShuzi(w[i - 1]) && IsShuzi(w[i + 1])) {
				TianChong(w[i - 1], w[i + 1]);
			}
		}
	}

	for (int i = 0; i < lzhan; i++) {
		cout << (char)zhan[i];
	}

	return 0;
}
2024/7/21 19:27
加载中...