不知道为什么全WA
查看原帖
不知道为什么全WA
1169261
Lei_8561楼主2024/10/31 16:47

对于第一组的测试数据,在本地编释得出的结果和它的输出结果一样

2 2 1 a-z aBBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYz

#include <iostream>
using namespace std;

const int N = 110, M = 1010;
char a[N], res[M];
int n, cnt;
int p1, p2, p3;

bool is_legal(int x)
{
	char begin = a[x - 1], after = a[x + 1];
	if (begin >= 'a' && begin <= 'z' && after >= 'a' && after <= 'z' && begin < after) return true;
	else if (begin >= '0' && begin <= '9' && after >= '1' && after <= '9' && begin < after) return true;
	return false;
}

void func(char begin, char after)
{
	if (p1 == 1 || p1 == 2)
	{
		if (p1 == 2 && begin >= 'a' && begin <= 'z') begin = begin - 'a' + 'A', after = after - 'a' + 'A';
		if (p3 == 1)
			for (int i = begin + 1; i < after; i++)
				for (int j = 0; j < p2; j++)
					res[++cnt] = (char)i;
		else
			for (int i = after - 1; i > begin; i--)
				for (int j = 0; j < p2; j++)
					res[++cnt] = (char)i;
	}
	else
	{
		for (int i = begin + 1; i < after; i++)
			for (int j = 0; j < p2; j++)
				res[++cnt] = (char)'*';
	}
}

int main()
{
	cin >> p1 >> p2 >> p3; getchar();
	while (a[++n] = getchar(), a[n] != '\n'); n--;

	for (int i = 1; i <= n; i++)
	{
		if (a[i] != '-' || !is_legal(i)) 
			res[++cnt] = a[i];
		else if (is_legal(i)) 
			func(a[i - 1], a[i + 1]);
	}

	for (int i = 1; i <= cnt; i++) cout << res[i];
	return 0;
}
2024/10/31 16:47
加载中...