Cod sursa(job #1982284)

Utilizator mirceagavrizimircea luca gavrizi mirceagavrizi Data 18 mai 2017 07:27:45
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 2.36 kb
int v[1001],d[1001];
#include<stdio.h>
using namespace std;
int main(){
    freopen("strmatch.in","r",stdin);
    freopen("strmatch.out","w",stdout);
    int n1,n2,i,nr1,nr2,nr3,nr4,h,g,s,ci,j,ch,f,t;
    char c;
    scanf("%c",&c);
    n1=666013;
    n2=1000003;
    i=0;
    nr1=0;
    nr2=0;
    h=1;
    while(c!='\n'){
        if(c>='0'&&c<='9')
            g=c-47;
        else if(c>='A'&&c<='Z')
            g=c-54;
        else if(c>='a'&&c<='z')
            g=c-60;
        if(i==0){
            nr1=nr1+1;
            nr2=nr2+1;
        }
        else{
            ci=i;
            s=1;
            while(ci!=0){
                s=s*62;
                s=s%n1;
            }
            nr1=nr1+s;
            ci=i;
            s=1;
            while(ci!=0){
                s=s*62;
                s=s%n2;
            }
            nr2=nr2+s;
        }
        scanf("%c",&c);
        h++;
    }
    h--;
    scanf("%c",&c);
    for(i=1;i<=h;i++){
        j=0;
        nr3=0;
        nr4=0;
        if(c>='0'&&c<='9')
            g=c-47;
        else if(c>='A'&&c<='Z')
            g=c-54;
        else if(c>='a'&&c<='z')
            g=c-60;
        d[i]=g;
        if(i==0){
            nr3=nr3+1;
            nr4=nr4+1;
        }
        else{
            ci=j;
            s=1;
            while(ci!=0){
                s=s*62;
                s=s%n1;
            }
            nr3=nr3+s;
            ci=i;
            s=1;
            while(ci!=0){
                s=s*62;
                s=s%n2;
            }
            nr4=nr4+s;
        }
        scanf("%c",&c);
    }
    h++;
    ch=h;
    f=1;
    t=1;
    while(c!='\n'){
        if(nr1==nr3&&nr2==nr4){
            v[f]=h-ch;
            f++;
        }
        if(c>='0'&&c<='9')
            g=c-47;
        else if(c>='A'&&c<='Z')
            g=c-54;
        else if(c>='a'&&c<='z')
            g=c-60;
        d[h]=g;
        ci=ch-1;
        s=1;
        while(ci!=0){
            s=s*62;
            s=s%n1;
        }
        nr3=nr3+nr3;
        nr3=nr3-(d[t]*s)%n1;
        nr3=(nr3*62)%n1;
        nr3=(nr3+g)%n1;
        nr3=nr4+nr4;
        nr3=nr4-(d[t]*s)%n2;
        nr3=(nr4*62)%n2;
        nr3=(nr4+g)%n2;
        t++;
    }
    printf("%d\n",f-1);
    for(i=1;i<f;i++)
        printf("%d ",v[i]);
return 0;
}