Cod sursa(job #1740799)

Utilizator Lungu007Lungu Ionut Lungu007 Data 12 august 2016 12:31:23
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#define MOD 666013
#define NMAX  1000001
#define CMAX 21
#define DMAX 50001
using namespace std;

ifstream in("abc2.in");
ofstream out("abc2.out");

char s[NMAX];
char q[CMAX];
unordered_map<int,int> m;
int x,a[NMAX],d[DMAX],c,n,p,cuv;

int pow(int x,int n)
{
    int rez = 1;
    while(n>0)
    {
        if(n%2==1)
        {
            n--;
            rez = rez*x%MOD;
        }
        n = n/2;
        x = x*x%MOD;
    }
    return rez%MOD;
}

int main()
{
    in >> s;

    for(n=0;s[n]!='\0';n++)
    {
        a[n] = s[n]-'a'+1;
    }

    while(in >> q)
    {
        for(cuv=0;q[cuv]!='\0';cuv++)
        {
            //cout << p << " ";
            d[c] = (d[c]*10+(q[cuv]-'a'+1))%MOD;

        }
        c++;
    }
    int h = 0;
    for(int i=0;i<cuv;i++)
    {
        h = (h*10 + a[i])%MOD;
    }
    m[h] = 1;
    for(int i=cuv;i<n;i++)
    {
        h = ((h-(h/pow(10,(cuv-1))%MOD*pow(10,cuv-1)))*10+ a[i])%MOD;
        m[h] = 1;
    }
    int contor=0;
    for(int i=0;i<c;i++)
    {
        if(m[d[i]]==1)
        {
            contor++;
            m[d[i]] =1;
        }
    }
    out << contor;
    return 0;
}