Pagini recente » Cod sursa (job #2435008) | Cod sursa (job #207237) | Cod sursa (job #226781) | Cod sursa (job #1233984) | Cod sursa (job #147858)
Cod sursa(job #147858)
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#define IN "strmatch.in"
#define OUT "strmatch.out"
#define maxx 200000000
ifstream fin(IN);
ofstream fout(OUT);
char a[maxx],b[maxx];
int v[maxx];
long sol;
long c,lung,lungg;
void citire();
void calc();
int verif(int i);
int main()
{
citire();
fin.close();
calc();
lung=strlen(b);
lungg=strlen(a);
for(long i=lungg-1;i<=lung-1;i++)
if(v[i]==c && b[i]==a[lungg-1])
if(verif(i))
sol++;
fout<<sol<<endl;
fout.close();
return 0;
}
void citire()
{
fin>>a>>b;
}
void calc()
{
long i;
long auxa=strlen(a);
long auxb=strlen(b);
c=0;
for(i=0;i<auxa;i++)
c=c+(a[i]-'A')+1;
v[0]=b[0]-'A'+1;
for(i=1;i<auxa;i++)
v[i]=v[i-1]+(b[i]-'A')+1;
for(i=auxa;i<auxb;i++)
v[i]=v[i-1]+(b[i]-'A')+1-(b[i-auxa]-'A'+1);
}
int verif(int i)
{
long j;
long z=lungg-1;
for(j=i;j>=i-lungg+1;j--)
if(b[j]!=a[z--])
return 0;
return 1;
}