Cod sursa(job #2452312)

Utilizator RadianElevenAdrian Ariotn RadianEleven Data 30 august 2019 14:12:34
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;
ifstream f ("abc2.in");
ofstream g ("abc2.out");
string s;
string t;
long long a,b;
vector<long long > vek;
long long  lenstr, texlen;
long long  mod=29989;
long long abmodc(long long a,long long b)
{
     //   a^b mod c

   if(a % mod == 0)
		return 0;

	long long  res=1;

	while(b)
	{
		if(b%2==1)
			res = (res * a) % mod;

		b /= 2;
		a = (a * a) % mod;
	}

	return res;
}
int main()
{
    f>>s;
    while(f>>t)
    {
        lenstr=t.size();
        a=0;
        for(long long  i=0;i<=t.size()-1;++i)
        {
            a*=4;
            a+=t.at(i)-'a'+1;


        }
        vek.push_back(a);
      //  g<<a<<" "<<t<<"\n ";
    }
    long long pow=abmodc(4, lenstr-1);
    texlen=s.size();
    long long ko=0;
    b=0;
    for(long long  i=0;i<s.size();++i)
    {
        b%=pow;
        b*=4;
        b+=s.at(i)-'a'+1;
        if(i>=lenstr-1)
        {
                 //   g<<"b-> "<<b<<" "<<s<<"\n";

            if(find(vek.begin(), vek.end(), b)!=vek.end())
                ko++;
        }
    }
    g<<ko;

    return 0;
}