[NOIP2007 提高组] 字符串的展开
2024年12月25日小于 1 分钟
#include <iostream>
using namespace std;
int p1, p2, p3;
void ff(char a)
{
if (p1 == 3)
a = '*';
else if (p1 == 2)
{
if ('a' <= a && a <= 'z')
a = a - 'a' + 'A';
}
else
{
if ('A' <= a && a <= 'Z')
a = a - 'A' + 'a';
}
for (int i = 0; i < p2; i++)
cout << a;
}
void f(char a, char b)
{
string s = "";
if (b <= a)
{
cout << '-';
return;
}
if (('0' <= a && a <= '9' && '0' <= b && b <= '9') ||
('a' <= a && a <= 'z' && 'a' <= b && b <= 'z') ||
('A' <= a && a <= 'Z' && 'A' <= b && b <= 'Z'))
{
if (p3 == 1)
{
for (char x = a + 1; x <= b - 1; x++)
ff(x);
}
else
{
for (char x = b - 1; x >= a + 1; x--)
ff(x);
}
}
else
{
cout << '-';
return;
}
}
int main()
{
string s;
cin >> p1 >> p2 >> p3;
cin >> s;
for (int i = 0; i < s.length(); i++)
{
if (s[i] == '-')
{
if (i != 0 && i != s.length() - 1)
f(s[i - 1], s[i + 1]);
else
cout << '-';
}
else
cout << s[i];
}
return 0;
}