Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: krittaphot
Problemset: ทางเชื่อม
Language: cpp
Time: 0.966 second
Submitted On: 2026-03-04 13:29:08
#include <bits/stdc++.h>
using namespace std;
int main()
{
int q;
cin >> q;
while(q--){
int n;
cin >> n;
vector<vector<int>> dp(2,vector<int> (n+1,0));
dp[0][0] = 1;
dp[1][0] = 1;
vector<vector<bool>> mp(2,vector<bool> (n+1,true));
for(int i = 0;i<2;i++){
for(int j = 1;j<n+1;j++){
char c;
cin >> c;
if(c == '#'){
mp[i][j] = false;
}
}
}
//
// for(int i = 0;i<2;i++){
// for(int j = 0;j<n+1;j++){
// cout << mp[i][j] << " ";
// }
// cout << "\n";
// }
for(int j = 1;j<n+1;j++){
for(int i = 0;i<2;i++){
if(!mp[i][j]){
dp[i][j] = 0;
continue;
}
if(i == 0){
if(!mp[i+1][j]){
dp[i][j] += dp[i][j-1] % 1000000007;
}
else{
dp[i][j] += dp[i][j-1] % 1000000007;
dp[i][j] += dp[i+1][j-1] % 1000000007;
}
}
else{
if(!mp[i-1][j]){
dp[i][j] += dp[i][j-1] % 1000000007;
}
else{
dp[i][j] += dp[i][j-1] % 1000000007;
dp[i][j] += dp[i-1][j-1] % 1000000007;
}
}
}
}
// cout << dp[0][n] << " " << dp[1][n] << "\n";
cout << (dp[0][n]+dp[1][n]) % 1000000007 << "\n";
}
}