#include<bits/stdc++.h>
using namespace std;
const int N = (2e7)+10;
char a[N],b[N];
int p[N],z[N];
int lena,lenb;
long long wz,wp;
void init();
void get_z();
void get_p();
void calculate();
void print();
void debug();
int main()
{
freopen("working.in","r",stdin);
freopen("working.out","w",stdout);
init();
get_z();
get_p();
calculate();
print();
return 0;
}
void debug()
{
cout<<endl;
for(int i=1;i<=lenb;i++) cout<<z[i]<<" ";
cout<<endl;
for(int i=1;i<=lena;i++) cout<<p[i]<<" ";
cout<<endl;
}
void print()
{
cout<<wz<<endl<<wp;
}
void calculate()
{
for(int i=1;i<=lenb;i++)
{
wz^=(long long)i*(z[i]+1);
}
for(int i=1;i<=lena;i++)
{
wp^=(long long)i*(p[i]+1);
}
}
void init()
{
cin>>(a+1)>>(b+1);
lena=strlen(a+1);
lenb=strlen(b+1);
}
void get_z()
{
z[1]=lenb;
for(int i=2,l=0,r=0;i<=lenb;i++)
{
if(i<=r) z[i]=min(z[i-l+1],r-i+1);
while(b[1+z[i]]==b[i+z[i]]) z[i]++;
if(i+z[i]-1>r) l=i,r=i+z[i]-1;
}
}
void get_p()
{
for(int i=1,l=0,r=0;i<=lena;i++)
{
if(i<=r) p[i]=min(z[i-l+1],r-i+1);
while(i+p[i]<=lena && 1+p[i]<=lenb && a[i+p[i]]==b[1+p[i]]) p[i]++;
if(i+p[i]-1>r) l=i,r=i+p[i]-1;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】