Pagini recente » Monitorul de evaluare | Cod sursa (job #771245) | Cod sursa (job #2862244) | Statistici Popoiag Marian (Popoiag98) | Cod sursa (job #1790140)
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 550
#define MOD 3210121
using namespace std;
char a[MAXN], b[MAXN];
int n, m, din[MAXN][MAXN][MAXN];
void add(int &to, int who)
{
to = (to+who) % MOD;
}
void solve()
{
din[0][n+1][0] = 1;
for (int i = 0; i <= n; i++)
for (int j = n+1; j >= 1; j--)
for (int st = 0; st <= m; st++) {
int dr = n + m + 2 - i - st - j;
if (a[i] == a[j] && i)
add(din[i][j][st], din[i-1][j+1][st]);
if (a[i] == b[dr] && i)
add(din[i][j][st], din[i-1][j][st]);
if (b[st] == a[j] && st)
add(din[i][j][st], din[i][j+1][st-1]);
if (b[st] == b[dr] && st)
add(din[i][j][st], din[i][j][st-1]);
}
}
void afisare()
{
int rez = 0;
for (int i = 0; i <= n; i++)
for (int j = 0; j <= m; j++)
add(rez, din[i][i+1][j]);
printf("%d", rez);
}
int main()
{
freopen("iv.in", "r", stdin);
freopen("iv.out", "w", stdout);
gets(a+1);
gets(b+1);
n = strlen(a+1);
m = strlen(b+1);
solve();
afisare();
return 0;
}