Cod sursa(job #267090)

Utilizator GodiesVlad Voicu Godies Data 26 februarie 2009 19:29:14
Problema Potrivirea sirurilor Scor 14
Compilator c Status done
Runda Arhiva educationala Marime 0.98 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define Const 100023
#define Const2 100007
#define LP 101

int main()
{
    char A[200001];
    char B[200001];
    int  v[200001];
    int nr=0,i, hashA1,hashA2,hashB2, hashB1;

    FILE *f=fopen("strmatch.in" , "rt");
    FILE *g=fopen("strmatch.out" , "wt");

    fscanf(f , "%s" , A);
    fscanf(f , "%s" , B);

    if(strlen(B)<strlen(A))
    {
        fprintf(g, "0");
        fclose(g);
        return 0;
    }

    for(i=0;i<strlen(A);i++)
    {
        hashA1=(hashA1+((B[i]*LP)%Const))%Const;
        hashA2=(hashA2+((B[i]*LP)%Const))%Const;
    }
    for(i=0;i<strlen(B);i++)
    {
        hashB1=(hashB1+((A[i]*LP)%Const))%Const;
        hashB2=(hashB2+((A[i]*LP)%Const))%Const;
    }
    if(hashB1==hashA1 && hashB2==hashA1)
    {
        v[0]=1;
        nr++;
    }
    fprintf(g,"%d", nr);
    for(i=0;i<=1000;i++)
        if(v[i]==1)
            fprintf(g,"%d", i);
    return 0;

}