洛谷 P1098 字符串的展开
可以说是非常变态了 全是细节问题
#include <iostream>
using namespace std;
void put(int p1,int p2,int p3, char fst, char lst)
{
if(p1 == 1)
{
if(p3 == 1)
{
char tc = fst + 1;
while(tc < lst)
{
int t = p2;
while(t--)
{
cout<<tc;
}
tc++;
}
}
else
{
char tc = lst - 1;
while(tc > fst)
{
int t = p2;
while(t--)
{
cout<<tc;
}
tc--;
}
}
}
else if(p1 == 2)
{
if(p3 == 1)
{
char tc = fst + 1 - 32;
while(tc < lst - 32)
{
int t = p2;
while(t--)
{
cout<<tc;
}
tc++;
}
}
else
{
if(lst >= 'a' && lst <='z')
{
char tc = lst - 1 - 32;
while(tc > fst - 32)
{
int t = p2;
while(t--)
{
cout<<tc;
}
tc--;
}
}
else
{
char tc = lst - 1;
while(tc > fst)
{
int t = p2;
while(t--)
{
cout<<tc;
}
tc--;
}
}
}
}
else
{
if(p3 == 1)
{
char tc = fst + 1;
while(tc < lst)
{
int t = p2;
while(t--)
{
cout<<'*';
}
tc++;
}
}
else
{
char tc = lst - 1;
while(tc > fst)
{
int t = p2;
while(t--)
{
cout<<'*';
}
tc--;
}
}
}
}
int main()
{
int p1, p2, p3;
cin>>p1>>p2>>p3;
string ss;
cin>>ss;
for(int i = 0; i < ss.length(); i++)
{
if(ss[i] != '-')
cout<<ss[i];
else
{
if(ss[i - 1] >= 'a' && ss[i - 1] <= 'z' && ss[i + 1] >= 'a' && ss[i + 1] <= 'z' || ss[i - 1] >= '0' && ss[i - 1] <= '9' && ss[i + 1] >= '0' && ss[i + 1] <= '9')
{
if(ss[i - 1] < ss[i + 1])
{
put(p1, p2, p3, ss[i - 1], ss[i + 1]);
}
else
{
cout<<ss[i];
}
}
else
{
cout<<ss[i];
}
}
}
return 0;
}