Pagini recente » Cod sursa (job #1843572) | Cod sursa (job #2690549) | Cod sursa (job #440352) | Cod sursa (job #1309390) | Cod sursa (job #830289)
Cod sursa(job #830289)
#include<fstream>
#include<string.h>
#define mod 3210121
#define DIM 510
using namespace std;
ifstream f("iv.in");
ofstream g("iv.out");
int a_max,b_max,total,i,j,k,sum;
char a[DIM],b[DIM];
int Cr[DIM][DIM],Ant[DIM][DIM];
int main(){
f>>(a+1)>>(b+1);
a_max=strlen(a+1);
b_max=strlen(b+1);
total=a_max+b_max;
if(a[1]==a[a_max])
Ant[1][1]=1;
if(a[1]==b[b_max])
Ant[1][0]=1;
if(b[1]==b[b_max])
Ant[0][0]=1;
if(b[1]==a[a_max])
Ant[0][1]=1;
for(i=2;i<=total/2;i++){
for(j=0;j<=a_max;j++){
for(k=0;k<=a_max;k++){
if((2*i-j-k)<=b_max&&(j+k)<=a_max){
if(a[j]==a[a_max-k+1])
Cr[j][k]+=Ant[j-1][k-1];
if(a[j]==b[b_max-(i-k)+1])
Cr[j][k]+=Ant[j-1][k];
if(b[i-j]==b[b_max-(i-k)+1])
Cr[j][k]+=Ant[j][k];
if(b[i-j]==a[a_max-k+1])
Cr[j][k]+=Ant[j][k-1];
while(Cr[j][k]>=mod)
Cr[j][k]-=mod;
}
}
}
memcpy(Ant,Cr,sizeof(Cr));
memset(Cr,0,sizeof(Cr));
}
for(i=0;i<=a_max;i++)
for(j=0;j<=a_max;j++)
sum+=Ant[i][j];
g<<sum;
return 0;
}