1458:Seek the Name, Seek the Fame
时间:2024-06-15 22:41
作者:admin
点击:次
#includebits/stdc++.husing namespace std;int getchs(char c){return c-'a'+1;}int n;int jz=29;int mod=1000000007;string s;vectorlong long hashhz(string s){ vectorlong long HS(400005,0);long long jzs=1;for(int i=s.size()-1;i=0;i--){HS[s.size()
#include<bits/stdc++.h>
using namespace std;
int getchs(char c){
return c-'a'+1;
}
int n;
int jz=29;
int mod=1000000007;
string s;
vector<long long> hashhz(string s){
vector<long long> HS(400005,0);
long long jzs=1;
for(int i=s.size()-1;i>=0;i--){
HS[s.size()-i]=(getchs(s[i])*jzs+HS[s.size()-i-1])%mod;
jzs*=jz;
jzs%=mod;
}
return HS;
}
vector<long long> hashqz(string s){
vector<long long> hs(400005,0);
for(int i=1;i<=s.size();i++){
hs[i]=(hs[i-1]*jz+getchs(s[i-1]))%mod;
}
return hs;
}
int main(){
while(cin >> s){
vector<long long> hs=hashqz(s);
vector<long long> HS=hashhz(s);
for(int i=1;i<=s.size();i++){
if(hs[i]==HS[i])
cout<<i<<" ";
}
cout << endl;
}
return 0;
}
(责任编辑:admin) |