求hack数据,除了1和15个点全WA
查看原帖
求hack数据,除了1和15个点全WA
507534
YBaggio楼主2022/8/2 15:03
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000010;
#define z 1000000009
#define Z 1000000003
#define ull unsigned long long
struct E{
    ull h,H;
    char c;
};vector<E>s,t;
char S[maxn],T[maxn];
int lens,lent;
ull ht,Ht,tmp;
ull Pow(int x,int y){
    ull sf=1;
    for(int i=1;i<=y;i++)sf*=x;
    return sf;
}
bool check(){
    for(int i=lent;i<s.size();i++)
        if(s[i].h==ht&&s[i].H==Ht)return 1;
    return 0;
}
void update(){
    for(int i=lent;i<s.size();i++){
        if(s[i].h==ht&&s[i].H==Ht){
            s.erase(s.begin()+i-lent+1,s.begin()+i+1);
            for(int j=1;j<s.size();j++)s[j].h=s[j].H=0;
            for(int j=1;j<=lent;j++){
                s[lent].h*=26;s[lent].h+=s[j].c-'a';s[lent].h%=z;
                s[lent].H*=26;s[lent].H+=s[j].c-'a';s[lent].H%=Z;
            }
            for(int j=lent+1;j<s.size();j++){
                s[j].h=s[j-1].h-(s[j-lent].c-'a')*tmp;s[j].h*=26;s[j].h+=s[j].c-'a';s[j].h%=z;
                s[j].H=s[j-1].H-(s[j-lent].c-'a')*tmp;s[j].H*=26;s[j].H+=s[j].c-'a';s[j].H%=Z;
            }
            break;
        }
    }
    return;
}
int main(){
    cin>>S>>T;
    lens=strlen(S),lent=strlen(T);
    for(int i=lent;i>=1;i--)T[i]=T[i-1];
    E mjyIly;s.push_back(mjyIly);
    for(int i=lens;i>=1;i--)S[i]=S[i-1];
    for(int i=1;i<=lens;i++){
        E x;x.h=0;x.H=0;x.c=S[i];
        s.push_back(x);
    }
    for(int i=1;i<=lent;i++){
        s[lent].h*=26;s[lent].h+=S[i]-'a';s[lent].h%=z;
        s[lent].H*=26;s[lent].H+=S[i]-'a';s[lent].H%=Z;
        ht*=26;ht+=T[i]-'a';ht%=z;
        Ht*=26;Ht+=T[i]-'a';Ht%=Z;
    }tmp=Pow(26,lent-1);
    for(int i=lent+1;i<=lens;i++){
        s[i].h=s[i-1].h-(S[i-lent]-'a')*tmp;s[i].h*=26;s[i].h+=S[i]-'a';s[i].h%=z;
        s[i].H=s[i-1].H-(S[i-lent]-'a')*tmp;s[i].H*=26;s[i].H+=S[i]-'a';s[i].H%=Z;
    }
    while(1){
        if(s.size()<lent)break;
        if(!check())break;
        update();
    }
    for(int i=1;i<s.size();i++)cout<<s[i].c;
    return 0;
}
2022/8/2 15:03
加载中...