Pagini recente » Cod sursa (job #1843583) | Cod sursa (job #2864842) | Cod sursa (job #2683794) | Cod sursa (job #2674378) | Cod sursa (job #1608377)
#include<cstdio>
#include<cstring>
#define MOD 3210121
int n,m,l,i,j,a,b,ss,d[510][510],d1[510][510];
char s[510],t[510];
FILE *f,*g;
int main(){
f=fopen("iv.in","r");
g=fopen("iv.out","w");
fscanf(f,"%s\n%s",s+1,t+1);
n=strlen(s+1);
m=strlen(t+1);
d[0][0]=1;
for( l=1; l<=(n+m)/2; l++ ){
for( i=0; i<=l; i++ ){
for( j=0; j <= l && i + j <= n; j++ ){
a=l-i-1;
b=l-j-1;
if( i + j <= n - 2 && s[ n - j ] == s[ i + 1 ] )
d1[ i + 1 ][ j + 1 ] = d[i][j] % MOD;
if( i + j <= n - 1 && a + b <= m - 1 && s[ i + 1 ] == t[ m - b ] )
d1[ i + 1 ][j] = ( d1[ i+1 ][j] + d[i][j] ) % MOD;
if( i + j <= n - 1 && a + b <= m - 1 && s[ n - j ] == t[ a + 1 ] )
d1[i][ j + 1 ] = ( d1[i][ j + 1 ] + d[i][j] ) % MOD;
if( a + b <= m - 2 && t[ a + 1 ] == t[ m - b ] )
d1[i][j] = ( d1[i][j] + d[i][j] ) % MOD;
}
}
for(i=0; i<=l; i++ ){
for(j=0; j<=l; j++ ){
d[i][j] = d1[i][j];
d1[i][j] = 0;
}
}
}
for(i=0; i<=n; i++){
for(j=0; j<=n; j++ ){
if( i + j <= n )
ss = ( ss + d[i][j] ) % MOD;
}
}
fprintf(g,"%d",ss);
fclose(f);
fclose(g);
return 0;
}