求调一下
查看原帖
求调一下
1029900
YuYuanPQ楼主2023/8/26 08:07

WA了 NN 次,每次都 00 分,求调。

(提交记录)

代码:

#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;
}

2023/8/26 08:07
加载中...