Pagini recente » Cod sursa (job #2889074) | Cod sursa (job #103727) | Cod sursa (job #340057) | Cod sursa (job #2169393) | Cod sursa (job #2487127)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("iv.in");
ofstream fout("iv.out");
int n,m,d[4][510][510],af,t,k,i,j,k1;
char a[510],b[510];
int main()
{
fin >> a+1 >> b+1;
n=strlen(a+1);
m=strlen(b+1);
if (a[1]==a[n]) d[1][1][1]=1;
if(a[1]==b[m]) d[1][1][0]=1;
if(b[1]==a[n]) d[1][0][1]=1;
if(b[1]==b[m]) d[1][0][0]=1;
for (k1=2;k1<=(n+m)/2;k1++)
{
for (i=0;i<=n && i<=k1;i++) for(j=0;j+i<=n && j<=k1;j++)
{
d[k][i][j]=0;
if (a[i]==a[n-j+1] && i>0 && n-j+1<=n)
{
d[k][i][j]+=d[1-k][i-1][j-1];
d[k][i][j]%=3210121;
}
if (a[i]==b[m+j-k1+1] && i>0 && m-k1+j+1<=m)
{
d[k][i][j]+=d[1-k][i-1][j];
d[k][i][j]%=3210121;
}
if (b[k1-i]==a[n-j+1] && k1-i>0 && n-j+1<=n)
{
d[k][i][j]+=d[1-k][i][j-1];
d[k][i][j]%=3210121;
}
if (b[k1-i]==b[m-k1+j+1] && k1-i>0 && m-k1+j+1<=m)
{
d[k][i][j]+=d[1-k][i][j];
d[k][i][j]%=3210121;
}
}
k=1-k;
}
k=1-k;
if((n+m)%2) for (i=0;i<n;i++)
{
af+=d[k][i][n-i];
af%=3210121;
af+=d[k][i][n-i-1];
af%=3210121;
}
else for (i=0;i<=n;i++)
{
af+=d[k][i][n-i];
af%=3210121;
}
fout << af;
return 0;
}