Pagini recente » Cod sursa (job #3246482) | Cod sursa (job #1922683) | Cod sursa (job #1279091) | Cod sursa (job #2926074) | Cod sursa (job #1992464)
#include <fstream>
#include <string.h>
#define MOD 3210121
using namespace std;
ifstream fin("iv.in");
ofstream fout("iv.out");
int a[2][510][510],n1,n2,i,j,dr,k,rez,p,l;
char s1[501],s2[501];
void ad(int &a,int b)
{
a+=b;
a=a%MOD;
}
int main()
{
fin>>s1+1;
fin>>s2+1;
n1=strlen(s1+1);
n2=strlen(s2+1);
l=n1+n2;
a[0][0][0]=1;
p=0;
for(i=0;i<=n1;++i)
{
for(j=0;j<=n1-i;++j)
for(k=0;k<=n2;++k)
{
dr=i+k-j;
if(dr<0||dr+k>n2)
continue;
if(i+j+k+dr==l-1||i+j+k+dr==l)
{
ad(rez,a[p][j][k]);
continue;
}
if(s1[i+1]==s1[n1-j])
ad(a[1-p][j+1][k],a[p][j][k]);
if(n2-dr>=1&&s1[i+1]==s2[n2-dr])
ad(a[1-p][j][k],a[p][j][k]);
if(s2[k+1]==s1[n1-j])
ad(a[p][j+1][k+1],a[p][j][k]);
if(n2-dr>=1&&s2[k+1]==s2[n2-dr])
ad(a[p][j][k+1],a[p][j][k]);
a[p][j][k]=0;
}
p=1-p;
}
fout<<rez;
return 0;
}