Pagini recente » Cod sursa (job #1052753) | Cod sursa (job #1277489) | Cod sursa (job #2290987) | Cod sursa (job #1856592) | Cod sursa (job #1284553)
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
char s1[505],s2[505];
int a[1005][1005];
int x[505],y[505];
int n,m,i,j,p,q,k,l,ls,k1;
int main()
{
freopen("iv.in","r",stdin);
freopen("iv.out","w",stdout);
gets(s1+1);
gets(s2+1);
n=strlen(s1+1);
m=strlen(s2+1);
l=n+m;
a[1][1]=1; a[0][0]=1;
for (i=1;i<=l;i++)
for (j=i;j<=l;j++)
a[i][j]=1;
for (k=1;k<=l;k++)
for (k1=k;k1>=1;k1--)
{
if (k1==k) {a[k][k1]=1; continue;}
ls=k-k1+1;
for (i=max(0,ls-m);i<=min(n,ls);i++)
{
j=ls-i;
if (i)
if (s1[k-j-i+1]==s1[k-j])
a[k][k1]=(a[k][k1]+a[k-1][k1+1])%3210121;
if (j)
if (s2[k-i-j+1]==s2[k-i])
a[k][k1]=(a[k][k1]+a[k-1][k1+1])%3210121;
if ((i)&&(j))
if (s1[k-j-i+1]==s2[k-i])
a[k][k1]=(a[k][k1]+a[k-1][k1+1])%3210121;
if ((i)&&(j))
if (s2[k-j-i+1]==s1[k-j])
a[k][k1]=(a[k][k1]+a[k-1][k1+1])%3210121;
}
}
printf("%d",a[n+m][1]);
return 0;
}