Cod sursa(job #2976696)

Utilizator Giurgea3000Giurgea Giurgea3000 Data 9 februarie 2023 20:53:58
Problema Potrivirea sirurilor Scor 14
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.37 kb
#include <fstream>
#include <cstring>

using namespace std;

#define mod 10000000000007

ifstream cin("strmatch.in");
ofstream cout ("strmatch.out");

int v[2000002],j;

int main()
{
    char c[2000002];
    cin>>c;
    int n=strlen(c);
    long long nra=0,p=1;
    for(int i=0;i<n;i++)
    {
        if(c[i]>='0' && c[i]<='9')
        {
            nra*=62;
            nra+=c[i]-'0';
        }
        else if(c[i]>='A' && c[i]<='Z')
        {
            nra*=62;
            nra+=c[i]-54;
        }
        else
        {
            nra*=62;
            nra+=c[i]-61;
        }
        nra%=mod;
        p=p*62;
        p%=mod;
    }
  //  cout<<nra<<"\n";
    int i=0;
    long long nrb=0;
    char c1;
    while(cin>>c1)
    {
        if(c1>='0' && c1<='9')
        {
            nrb*=62;
            nrb+=c1-'0';
        }
        else if(c1>='A' && c1<='Z')
        {
            nrb*=62;
            nrb+=c1-54;
        }
        else
        {
            nrb*=62;
            nrb+=c1-61;
        }
        nrb%=mod;
        nrb%=p;
        if(nra==nrb)
        {
            j++;
            v[j]=i-n+1;
        }
        i++;
           // cout<<c1<<" "<<nrb<<"\n";
    }
    if(j==0)
    {
        cout<<0;
    }
    else
    {
        cout<<j<<"\n";
        if(j>1000)
            j=1000;
        for(int x=1;x<=j;x++)
        {
            cout<<v[x]<<" ";
        }
    }
    return 0;
}