Pagini recente » Cod sursa (job #868082) | Cod sursa (job #842292) | Cod sursa (job #2277679) | Cod sursa (job #2241126) | Cod sursa (job #1256165)
#include<fstream>
#include<cstring>
using namespace std;
#define MOD 3210121
ifstream fin("iv.in");
ofstream fout("iv.out");
char a[512],b[512],aux[512];
int n,m,p,sol,D[512][512],E[512][512];
int main()
{
int i,j,k;
fin>>(a+1)>>(b+1);
n=strlen(a+1), m=strlen(b+1);
E[0][0]=1, p=(m+n)>>1;
for (k=1;k<=p;++k)
{
for (i=0;i<=n;++i)
for (j=0;j<=n;++j)
{
D[i][j]=0;
if (a[i]==a[n-j+1] && i>0 && j>0)
D[i][j]+=E[i-1][j-1];
if (a[i]==b[m-k+j+1] && i>0)
D[i][j]+=E[i-1][j];
if (b[k-i]==a[n-j+1] && j>0)
D[i][j]+=E[i][j-1];
if (b[k-i]==b[m-k+j+1])
D[i][j]+=E[i][j];
while (D[i][j]>MOD)
D[i][j]-=MOD;
}
for (i=0;i<=n;++i)
for (j=0;j<=n;++j)
E[i][j]=D[i][j];
}
for (i=0;i<=n && i<=p;++i)
for (j=0;j<=n && i<=p;++j)
if (i+j<=n && 2*p<=m+i+j)
{
sol+=D[i][j];
while (sol>MOD)
sol-=MOD;
}
fout<<sol<<"\n";
return 0;
}