Pagini recente » Cod sursa (job #2154354) | Cod sursa (job #1382928) | Cod sursa (job #3126386) | Cod sursa (job #1674595) | Cod sursa (job #1240761)
#include <fstream>
#include <cstring>
#define mod 3210121
using namespace std;
ifstream fin ("iv.in");
ofstream fout ("iv.out");
int d[505][505],d2[505][505],l,i,j,sol,n,m;
char a[505],b[505];
int main () {
fin>>a;
fin>>b;
n=strlen(a);m=strlen(b);
if (a[0]==a[n-1])
d[1][1]=1;
if (a[0]==b[m-1])
d[1][0]=1;
if (b[0]==a[n-1])
d[0][1]=1;
if (b[0]==b[m-1])
d[0][0]=1;
for (l=2;l<=(n+m)/2;l++) {
for (i=0;i<=n;i++)
for (j=0;j<=n;j++) {
if (i+j>n)
break;
if (a[i]==a[n-j-1]&&i+j+2<=n){
d2[i+1][j+1]=d[i][j];
d2[i+1][j+1]%=mod;
}
if (a[i]==b[m-(l-j)]&&i+j+1<=n){
d2[i+1][j]+=d[i][j];
d2[i+1][j]%=mod;
}
if (b[l-i-1]==a[n-j-1]&&i+j+1<=n){
d2[i][j+1]+=d[i][j];
d2[i][j+1]%=mod;
}
if (b[l-i-1]==b[m-(l-j)]){
d2[i][j]+=d[i][j];
d2[i][j]%=mod;
}
}
for (i=1;i<=n;i++)
for (j=1;j<=m;j++){
d[i][j]=d2[i][j];
d2[i][j]=0;
}
}
for (i=0;i<=n;i++)
for (j=0;j<=n;j++)
if (i+j<=n) {
sol+=d[i][j];
sol%=mod;
}
fout<<sol<<"\n";
return 0;
}