Pagini recente » Cod sursa (job #116301) | Cod sursa (job #2344941) | Cod sursa (job #2891821) | Cod sursa (job #1171058) | Cod sursa (job #2402616)
#include <fstream>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int rez[2000001];
int main()
{
long long a = 0 , mod = 999999999999989 , i;
long long b = 0 , cif = 0 , cnt = 0 , p10 = 1 , poz = 1;
char k;
cin.get(k);
while(k != '\n')
{
a += (k - 'A' + 1);
a *= 27;
a = a % mod;
cif++;
p10 *= 27;
cin.get(k);
}
a /= 27;
p10 /= 27;
while(cin.get(k) && cif)
{
cif--;
b += (k - 'A' + 1);
b *= 27;
b %= mod;
}
b/= 27;
if(b == a)
{cnt++;
rez[cnt] = poz;}
while(cin.get(k))
{
poz++;
b %= p10;
b *= 27;
b += k - 'A' + 1;
if(a == b)
{cnt++;
rez[cnt] = poz;}
}
cout << cnt << '\n';
for(i = 1; i <= cnt; i++)
cout << rez[i] << " ";
return 0;
}