29pts求调!!
查看原帖
29pts求调!!
903196
李逸扬2013楼主2025/8/3 16:07

代码:\huge代码:

#include<iostream>
#include<cstring>
using namespace std;
char a[20000050],b[20000050];
int z[20000001],e[20000001];
long long ans;
int an,bn;
void qz(){
    int c = 0,r = -1;
    for(int i = 0;i<bn;i++){
        int lenth = r>i?min(r-i,z[i-c]):0;
        while(i+lenth<bn&&b[i+lenth] == b[lenth]){
            lenth++;
        }
        z[i] = lenth;
        if(z[i]>r){
            c = i;
            r = z[i];
        }
    }
}
void qe(){
    int c = 0,r = -1;
    for(int i = 0;i<an;i++){
        int lenth = r>i?min(r-i,z[i-c]):0;
        while(i+lenth<an&&lenth<bn&&a[i+lenth] == b[lenth])
        {
            lenth++;
        }
        e[i] = lenth;
        if(e[i]>r){
            c = i;
            r = e[i];
        }
    }
}
int main(){
    scanf("%s%s",a,b);
    an = strlen(a),bn = strlen(b);
    qz();
    qe();
    for(int i = 0;i<bn;i++){
        ans^=(i+1)*1ll*(z[i]+1);
    }
    cout<<ans<<endl;
    ans = 0;
    for(int i = 0;i<an;i++){
        ans^=(i+1)*1ll*(e[i]+1);
    }
    cout<<ans<<endl;
    return 0;
}

大佬给调,谢谢!!\Huge大佬给调,谢谢!!

2025/8/3 16:07
加载中...