Pagini recente » Cod sursa (job #2378099) | Cod sursa (job #2202124) | Cod sursa (job #25051) | Cod sursa (job #3238442) | Cod sursa (job #3169503)
#include <bits/stdc++.h>
#define DIM 500
#define MOD 3210121
using namespace std;
//ifstream f("in.in");
//ofstream g("out.out");
ifstream f("s2c.in");
ofstream g("s2c.out");
int n,m;
int dp[2][DIM+5][DIM+5];
char a[DIM+5],b[DIM+5];
int sol = 0;
signed main(){
f>>(a+1)>>(b+1);
n = strlen(a+1);
m = strlen(b+1);
int l = 0;
dp[l][0][0] = 1;
for(int i = 1;i<=(n+m)/2;i++){
l^=1;
for(int ja = 0;ja<=n;ja++){
for(int ka = 0;ka<=m;ka++){
int jb = i-ja;
int kb = i-ka;
dp[l][ja][ka] = 0;
if(a[ja] == a[n-ka+1] && ja > 0 && ka > 0){
dp[l][ja][ka] += dp[l^1][ja-1][ka-1];
dp[l][ja][ka] %= MOD;
}
if(a[ja] == b[m-kb+1] && ja > 0 && kb > 0){
dp[l][ja][ka] += dp[l^1][ja-1][ka];
dp[l][ja][ka] %= MOD;
}
if(b[jb] == a[n-ka+1] && jb > 0 && ka > 0){
dp[l][ja][ka] += dp[l^1][ja][ka-1];
dp[l][ja][ka] %= MOD;
}
if(b[jb] == b[m-kb+1] && jb>0 && kb > 0){
dp[l][ja][ka] += dp[l^1][ja][ka];
dp[l][ja][ka] %= MOD;
}
}
}
}
if((n+m)%2 == 0){
for(int i=0;i<=n;i++){
sol += dp[l][i][n-i];
sol %= MOD;
}
}else{
for(int i=0;i<n;i++){
sol += dp[l][i][n-i-1];
sol %= MOD;
sol += dp[l][i][n-i];
sol %= MOD;
}
}
g<<sol;
return 0;
}