Cod sursa(job #1670116)

Utilizator alexburdescuBurdescu Alexandru alexburdescu Data 31 martie 2016 14:24:30
Problema Potrivirea sirurilor Scor 16
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
ifstream  fin("strmatch.in");
ofstream fout("strmatch.out");
int a,i,S,c[1002],j,n,x,k,b,r;
char A[2000001],B[2000001];
int main ()
{
    fin.get(A,2000001);
    fin.get();
    a=strlen(A);
    S=0;
    for(i=0;i<=a-1;i++)
    {
        k=int(A[i])*int(A[i])%64;
        S=(S+k)%10007;
    }
    fin.get(B,2000001);
    b=strlen(B);
    x=1;
    for(i=0;i<=b-a;i++)
    {
        r=0;
        for(j=i;j<=a+i-1;j++)
        {
            k=int(B[j])*int(B[j])%64;
            r=(r+k)%10007;
        }
        if(r==S)
        {
            n++;
            if(n<=1000)
            {
                c[x]=i;
                x++;
            }
        }
    }
    fout<<n<<endl;
    for(i=1;i<=x-1;i++)
    {
        fout<<c[i]<<" ";
    }
    fin.close();
    fout.close();
    return 0;
}