洛谷 P1098 多项式展开
作者:
quiet_
,
2023-04-07 16:58:41
,
所有人可见
,
阅读 173
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cctype>
using namespace std;
int main()
{
int p1, p2, p3;
string s = " ";
cin >> p1 >> p2 >> p3 >> s;
for(auto i = 1 ; i < s.size() - 1 ; i ++)
{
if(p1 == 1)
{
if(s[i] == '-' && ((isdigit(s[i - 1]) && isdigit(s[i + 1]) && s[i - 1] < s[i + 1]) || (isalpha(s[i - 1]) && isalpha(s[i + 1]) && s[i - 1] < s[i + 1])))
{
string b;
s.erase(i , 1);
for(int k = s[i - 1] + 1 ; k < s[i] ; k ++)
{
for(int j = 0 ; j < p2 ; j ++)
{
char c = k;
b.push_back(c);
}
}
if(p3 == 1)
s.insert(i , b);
else
{
reverse(b.begin(), b.end());
s.insert(i , b);
}
}
}
else if(p1 == 2)
{
if(s[i] == '-' && ((isdigit(s[i - 1]) && isdigit(s[i + 1]) && s[i - 1] < s[i + 1]) || (isalpha(s[i - 1]) && isalpha(s[i + 1]) && s[i - 1] < s[i + 1])))
{
string b;
s.erase(i , 1);
for(int k = s[i - 1] + 1 ; k < s[i] ; k ++)
{
for(int j = 0 ; j < p2 ; j ++)
{
char c = k;
if(islower(c))
c = toupper(c);
b.push_back(c);
}
}
if(p3 == 1)
s.insert(i , b);
else
{
reverse(b.begin(), b.end());
s.insert(i , b);
}
}
}
else if(p1 == 3)
{
if(s[i] == '-' && ((isdigit(s[i - 1]) && isdigit(s[i + 1]) && s[i - 1] < s[i + 1]) || (isalpha(s[i - 1]) && isalpha(s[i + 1]) && s[i - 1] < s[i + 1])))
{
string b;
s.erase(i , 1);
for(int k = s[i - 1] + 1 ; k < s[i] ; k ++)
{
for(int j = 0 ; j < p2 ; j ++)
{
b.push_back('*');
}
}
s.insert(i , b);
}
}
}
cout << s;
return 0;
}