Pagini recente » Cod sursa (job #614003) | Cod sursa (job #3184634) | Cod sursa (job #2721316) | Cod sursa (job #1302781) | Cod sursa (job #3257094)
#include <iostream>
#include <fstream>
#include <vector>
//#include <bits/stdc++.h>
#define in fin
#define out fout
#define mod 3210121
using namespace std;
ifstream fin("iv.in");
ofstream fout("iv.out");
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string a, b; in >> a >> b;
int n = a.size(), m = b.size();
int dp[n][n][m]; // i1, j1, i2
for(int i1 = 0; i1 < n; i1++){
for(int j1 = 0; j1 < n; j1++){
for(int i2 = 0; i2 < m; i2++) dp[i1][j1][i2] = 0;
}
}
dp[0][0][m - 1] = 1;
for(int i1 = 0; i1 < n; i1++){
for(int j1 = n - 1; j1 >= 0; j1--){
for(int i2 = 0; i2 < m; i2++){
int j2 = m - (i1 + i2) - 1;
dp[i1 + 1][i2][j1] = (dp[i1 + 1][i2][j1] + dp[i1][j1][i2]) % mod;
dp[i1 + 1][i2][j1 - 1] = (dp[i1 + 1][i2][j1 - 1] + dp[i1][j1][i2]) % mod;
dp[i1][i2 + 1][j1] = (dp[i1][i2 + 1][j1] + dp[i1][j1][i2]) % mod;
dp[i1][i2 + 1][j1 - 1] = (dp[i1][i2 + 1][j1 - 1] + dp[i1][j1][i2]) % mod;
}
}
}
// cout << "dp : \n";
// for(int i1 = 0; i1 < n; i1++){
// for(int j1 = 0; j1 < n; j1++){
// for(int i2 = 0; i2 < m; i2++){
// cout << i1 << " , " << j1 << " , " << i2 << " = ";
// cout << dp[i1][j1][i2] << "\n";
// }
// }
// }
int sum = 0;
for(int x = 0; x < n; x++){
for(int y = 0; y < m; y++){
sum += dp[x][n - x - 1][y];
sum %= mod;
// cout << "add dp[" << x << "][" << n - x - 1 << "][" << y << "]\n";
}
}
out << sum << '\n';
return 0;
}