WA了 N 次,每次都 0 分,求调。
(提交记录)
代码:
#include<bits/stdc++.h>
#define lowbit(x) ((x)&(-x))
using namespace std;
char ch,a[100010],s[100010];
int l,n,k;
char mima[31]={"KXVMCNOPHQRSZYIJADLEGWBUFT"};
int qread()
{
char ch=getchar();
int sum=0,f=1;
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
sum=(sum<<1)+(sum<<3)+ch-'0';
ch=getchar();
}
return sum*f;
}
void qprint(int x)
{
if(x<0)
{
putchar(' ');
x=-x;
}
if(x>9) qprint(x/10);
putchar(x%10+48);
}
void zhalan()
{
int x;
x=qread();
int cnt=0,j=1;
cnt++;
char p[100010];
memset(p,'\0',sizeof(p));
for(int i=1;i<=l;i++)
{
p[j]=s[i];
j+=x;
if(j>l)
{
cnt++;
j=cnt;
}
}
//memset(s,'\0',sizeof(s));
memcpy(s,p,sizeof(p));
//for(int i=1;i<=l;i++) s[i]=p[i];
//for(int i=1;i<=l;i++) cout<<s[i];cout<<endl;
return;
}
void vigenere()
{
//string t;
char t[100010],p[100010];
int cnt=0;
memset(t,'\0',sizeof(t));
memset(p,'\0',sizeof(p));
/*ch=getchar();
while(!(ch>='A'&&ch<='Z')&&!(ch>='a'&&ch<='z'))
{
ch=getchar();
}
while(ch>='A'&&ch<='Z')
{
t[++lt]=ch;
ch=getchar();
}*/
cin>>t;
int len_t=strlen(t);
for(int i=len_t;i>=1;i--) t[i]=t[i-1];
for(int i=1;i<=len_t;i++)
{
int bz=0;
if(t[cnt]>='A'&&t[cnt]<='Z') t[cnt]=t[cnt]+32;
if(s[i]>='A'&&s[i]<='Z')
{
s[i]=s[i]+32;
bz=1;
}
p[i]=(s[i]-t[cnt]+26)%26+'a';
if(bz==1)
{
p[i]-=32;
}
cnt++;
cnt%=len_t;
}
memcpy(s,p,sizeof(p));
//for(int i=1;i<=len_t;i++) s[i]=p[i];
return;
}
void qwe()
{
for(int i=1;i<=l;i++)
{
int bz=0;
if(s[i]>='A'&&s[i]<='Z') s[i]+=32,bz=1;
s[i]=mima[s[i]-97];
if(bz) s[i]-=32;
}
return;
}
int main()
{
//scanf("%d",&n);
for(int i=1;i<=26;i++) mima[i]=mima[i]+32;
//for(int i=1;i<=26;i++) cout<<mima[i];cout<<endl;
n=qread();
cin>>ch;
while(ch!='\r'&&ch!='\n'&&ch!=EOF)
{
a[++l]=ch;
s[l]=ch;
ch=getchar();
}
//cout<<s<<endl;
//for(int i=1;i<=l;i++) cout<<s[i];cout<<endl;
for(int i=n;i>=1;i--)
{
//int k=0;
k=qread();
if(k==1)
{
zhalan();
}
else if(k==2)
{
vigenere();
}
else if(k==3)
{
qwe();
}
//for(int j=1;j<=l;j++) putchar(s[j]);putchar('\n');
}
//for(int i=1;i<=l;i++) cout<<s[i];//putchar(s[i]);putchar('\n');
for(int i=1;i<=l;i++) putchar(s[i]);putchar('\n');
return 0;
}