Pagini recente » Cod sursa (job #2899086) | Cod sursa (job #2020181) | Monitorul de evaluare | Cod sursa (job #1773886) | Cod sursa (job #2008804)
#include<bits/stdc++.h>
#define MOD 3210121
using namespace std;
ifstream si("iv.in");
ofstream so("iv.out");
int d[2][1<<9][1<<9];
char a[1<<9],b[1<<9];
void ad(int &x,int y)
{
x+=y;
if(x>=MOD)
x-=MOD;
}
int main ()
{
int l,n,dr,m,p=0,rez=0;
si>>(a+1)>>(b+1);
n=strlen(a+1);
m=strlen(b+1);
//cout<<1;
l=n+m;
d[0][0][0]=1;
for(int i=0;i<=n;++i,p^=1)
for(int j=0;i+j<=n;++j)
for(int k=0;k<=m;++k)
{
dr=i+k-j;
if(dr<0||dr+k>m)
continue;
int x=d[p][j][k];
if(i+j+k+dr==l||i+j+k+dr==l-1)
{
ad(rez,x);
continue;
}
if(a[i+1]==a[n-j])
ad(d[p^1][j+1][k],x);
if(m-dr>=1&&a[i+1]==b[m-dr])
ad(d[p^1][j][k],x);
if(b[k+1]==a[n-j])
ad(d[p][j+1][k+1],x);
if(m-dr>=1&&b[k+1]==b[m-dr])
ad(d[p][j][k+1],x);
d[p][j][k]=0;
}
so<<rez;
return 0;
}