Cod sursa(job #2284427)

Utilizator ButumAndreiButum Andrei ButumAndrei Data 17 noiembrie 2018 10:58:35
Problema Potrivirea sirurilor Scor 14
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <cmath>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int main()
{int n=2,m=1,nr=0;


char c[101],s[101];
f.get(c,101);
f.get();
f.get(s,101);
int q=strlen(c);
int hprin1=0;
int hprin2=0;
int hsec1=0;
int hsec2=0;


for(int i=1;i<=q;i++)
{
    hprin1=hprin1+c[i-1]*pow(n,q-i);
   hprin2=hprin2+c[i-1]*pow(m,q-i);
}
for(int i=1;i<=q;i++)
{
    hsec1=hsec1+s[i-1]*pow(n,q-i);
    hsec2=hsec2+s[i-1]*pow(m,q-i);
}
int poz[101];
int p=strlen(s);
for(int i=1;i<p-q+1;i++)
{if(hprin1==hsec1&&hprin2==hsec2)
    {
    poz[nr++]=i-1;
    }


      hsec1=hsec1-(s[i-1]*pow(n,q-1));
      hsec1=hsec1*n;
      hsec1+=s[i+2];
      hsec2=hsec2-(s[i-1]*pow(m,q-1));
      hsec2=hsec2*m;
      hsec2+=s[i+2];

}
g<<nr<<"\n";
for(int i=0;i<nr;i++)
    g<<poz[i]<<" ";
    return 0;
}