Pagini recente » Cod sursa (job #269642) | Cod sursa (job #3265594) | Cod sursa (job #2774517) | Cod sursa (job #333306) | Cod sursa (job #2976707)
#include <fstream>
#include <cstring>
using namespace std;
#define mod 10000000000007
ifstream cin("strmatch.in");
ofstream cout ("strmatch.out");
int v[2000002],j=0;
///////////////////////////////////// /////////////
int main()
{
char c[2000002],b[000002];
cin>>c;
int n=strlen(c);
long long nra=0,p=1;
for(int i=0;i<n;i++)
{
if(c[i]>='0' && c[i]<='9')
{
nra*=62;
nra+=c[i]-'0';
}
else if(c[i]>='A' && c[i]<='Z')
{
nra*=62;
nra+=c[i]-54;
}
else
{
nra*=62;
nra+=c[i]-61;
}
p=p*62;
}
// cout<<nra<<"\n";
int i=0;
long long nrb=0;
char c1;
while(cin>>c1)
{
if(c1>='0' && c1<='9')
{
nrb*=62;
nrb+=c1-'0';
b[i]=c1;
}
else if(c1>='A' && c1<='Z')
{
nrb*=62;
nrb+=c1-54;
b[i]=c1;
}
else
{
nrb*=62;
nrb+=c1-61;
b[i]=c1;
}
if(i>=n)
{
if(c1>='0' && c1<='9')
{
nrb-=(b[i-n]-'0')*p;
}
else if(c1>='A' && c1<='Z')
{
nrb-=(b[i-n]-54)*p;
}
else
{
nrb-=(b[i-n]-61)*p;
}
}
if(nra==nrb)
{
j++;
v[j]=i-n+1;
}
i++;
// cout<<c1<<" "<<nrb<<"\n";
}
if(j==0)
{
cout<<0;
}
else
{
cout<<j<<"\n";
if(j>1000)
j=1000;
for(int x=1;x<=j;x++)
{
cout<<v[x]<<" ";
}
}
return 0;
}