对于第一组的测试数据,在本地编释得出的结果和它的输出结果一样
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;
}