Pagini recente » Cod sursa (job #2919959) | Cod sursa (job #2635755) | Cod sursa (job #2626889) | Rating Jackson Henderson (pestcontrol507) | Cod sursa (job #1240785)
#include <fstream>
#include <cstring>
#define mod 3210121
using namespace std;
ifstream fin ("iv.in");
ofstream fout ("iv.out");
int d[505][505],d2[505][505],l,i,j,sol,n,m,ii,jj;
char a[505],b[505];
int main () {
fin>>a+1;
fin>>b+1;
n=strlen(a+1);m=strlen(b+1);
d[0][0]=1;
for (l=1;l<=(n+m)/2;l++) {
for (i=0;i<=l;i++)
for (j=0;j<=l;j++) {
if (i+j>n)
break;
ii=l-i-1;jj=l-j-1;
if (i+j+2<=n&&a[i+1]==a[n-j]){
d2[i+1][j+1]=d[i][j];
d2[i+1][j+1]%=mod;
}
if (i+j+1<=n&&ii+jj+1<=m&&a[i+1]==b[m-jj]){
d2[i+1][j]+=d[i][j];
d2[i+1][j]%=mod;
}
if (i+j+1<=n&&ii+jj+1<=m&&b[ii+1]==a[n-j]){
d2[i][j+1]+=d[i][j];
d2[i][j+1]%=mod;
}
if (ii+jj+2<=m&&b[ii+1]==b[m-jj]){
d2[i][j]+=d[i][j];
d2[i][j]%=mod;
}
}
for (i=0;i<=l;i++)
for (j=0;j<=l;j++){
d[i][j]=d2[i][j];
d2[i][j]=0;
}
}
for (i=0;i<=n;i++)
for (j=0;j<=n;j++)
if (i+j<=n) {
sol+=d[i][j];
sol%=mod;
}
fout<<sol<<"\n";
return 0;
}