Pagini recente » Cod sursa (job #1916469) | Cod sursa (job #2395309) | Cod sursa (job #601271) | Cod sursa (job #1564686) | Cod sursa (job #2253158)
#include<vector>
#include<fstream>
#define mod 3210121
using namespace std;
ifstream fin("iv.in");
ofstream fout("iv.out");
char s1[501],s2[501];
int n1,n2,n,i,j,k,h,sol,a[2][501][501];
int main()
{
fin>>s1+1;
for(i=1;s1[i]!=0;i++);
n1=i-1;
fin>>s2+1;
for(i=1;s2[i]!=0;i++);
n2=i-1;
n=n1+n2;
a[0][0][0]=1;
for(i=0;i<=n1;i++)
{ for(j=0;j<=n2;j++)
for(k=0;k+i<=n1;k++)
if(j+i+j-k<=n2)
{ h=i+j-k;
if(i+j+k+h==n||i+j+k+h==n-1)
sol=(sol+a[0][j][k])%mod;
if(s1[i+1]==s1[n1-k])
a[1][j][k+1]=(a[1][j][k+1]+a[0][j][k])%mod;
if(s1[i+1]==s2[n2-h])
a[1][j][k]=(a[1][j][k]+a[0][j][k])%mod;
if(s2[j+1]==s1[n1-k])
a[0][j+1][k+1]=(a[0][j+1][k+1]+a[0][j][k])%mod;
if(s2[j+1]==s2[n2-h])
a[0][j+1][k]=(a[0][j+1][k]+a[0][j][k])%mod;
}
for(j=0;j<=n2;j++)
for(k=0;k<=n1;k++)
a[0][j][k]=a[1][j][k],a[1][j][k]=0;
}
fout<<sol;
fin.close();
fout.close();
return 0;
}