Pagini recente » Cod sursa (job #1653587) | Cod sursa (job #1852201) | Cod sursa (job #1693254) | Cod sursa (job #1613117) | Cod sursa (job #2256242)
#include<fstream>
#include<cstring>
using namespace std;
ifstream in("iv.in");
ofstream out("iv.out");
int na,nb,mat[501][501],sol;
char a[501],b[501];
const int mod = 3210121;
int main (void) {
in >> a+1;
in >> b+1;
na=strlen (a+1);
nb=strlen (b+1);
mat[1][0] = 1;
mat[0][1] = 1;
for (int i = 0; i <= na; i ++) {
for (int j = 0; j <= nb; j ++) {
for (int k = na+1; k >= 1; k --) {
if (i == 0 && j == 0 && k == na+1) continue;
int l = nb + 1 - (i+j-(na+1 - k));
if ((i > 0 || j > 0) && (k < na+1 || l < nb+1) && (i<=k) && (j<=l)) {
if (i > 0 && ((a[i] == a[k] && k < na+1) || (a[i] == b[l] && l < nb+1))) {
mat[i][j] = (mat[i][j] + mat[i-1][j]) % mod;
}
if (j > 0 && ((b[j] == a[k] && k < na+1) || (b[j] == b[l] && l < nb+1))) {
mat[i][j] = (mat[i][j] + mat[i][j-1]) % mod;
}
}
}
}
}
for (int i = 1; i <= na; i ++) {
for (int j = 1; j <= nb; j ++) {
if ( ((na+nb) % 2 == 0 && i+j == (na+nb)/2) || ((na+nb) % 2 == 1 && i+j == (na+nb)/2+1))
sol = (sol + mat[i][j]) % mod;
}
}
out << sol;
return 0;
}