Pagini recente » Monitorul de evaluare | Rating Cristi Porf (cristi_poc) | Statistici Laura Adina Stupariu (Diddy-chan) | Cod sursa (job #209524) | Cod sursa (job #778898)
Cod sursa(job #778898)
#include<iostream>
#include<fstream>
#include<bitset>
#include<string.h>
using namespace std;
char a[2000002],b[2000002];
bitset <2001> d;
long long v[2000002];
int p[129],poz[1001];
inline void ciur(int n)
{
int i,j;
for(i=2;i*i<=n;i++)
if(d[i]==0)
for(j=i*i;j<=n;j=j+i)
d[j]=1;
}
int main ()
{
int i,n,m,nr;
long long s;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
f>>a>>b;
f.close();
n=strlen(a);
m=strlen(b);
for(i=n;i>=1;i--)
a[i]=a[i-1];
for(i=m;i>=1;i--)
b[i]=b[i-1];
ciur(2000);
for(i=1000;i<=2000;i++)
if(d[i]==0)
p[++p[0]]=i;
s=0;
cout<<p['A']<<" "<<p['B']<<" "<<p['C'];
for(i=1;i<=n;i++)
s=0LL+s+p[a[i]];
for(i=1;i<=m;i++)
v[i]=0LL+v[i-1]+p[b[i]];
nr=0;
for(i=n;i<=m;i++)
if(v[i]-v[i-n]==s) {
nr++;
if(nr<=1000)
poz[nr]=i-n;
}
g<<nr<<'\n';
for(i=1;i<=nr && i<=1000;i++)
g<<poz[i]<<" ";
g.close();
return 0;
}