Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: krittaphot
Problemset: ทางเชื่อม
Language: cpp
Time: 0.357 second
Submitted On: 2026-03-04 14:22:33
#include <bits/stdc++.h>
using namespace std;
char mp[2][5001];
int dp[2][5001];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long q;
cin >> q;
while(q--){
long long n;
cin >> n;
dp[0][0] = 1;
dp[1][0] = 1;
for(long long i = 0;i<2;i++){
for(long long j = 1;j<n+1;j++){
cin >> mp[i][j];
}
}
//
// for(long long i = 0;i<2;i++){
// for(long long j = 0;j<n+1;j++){
// cout << mp[i][j] << " ";
// }
// cout << "\n";
// }
for(long long j = 1;j<n+1;j++){
if(mp[0][j] == '.' && mp[1][j] == '.'){
dp[0][j] = (dp[0][j-1] + dp[1][j-1]) % 1000000007;
dp[1][j] = (dp[0][j-1] + dp[1][j-1]) % 1000000007;
}
else if(mp[0][j] == '#' && mp[1][j] == '.'){
dp[0][j] = 0;
dp[1][j] = dp[1][j-1] % 1000000007;
}
else if(mp[0][j] == '.' && mp[1][j] == '#'){
dp[0][j] = dp[0][j-1]% 1000000007;
dp[1][j] = 0;
}
else{
dp[0][j] = 0;
dp[1][j] = 0;
}
}
// cout << dp[0][n] << " " << dp[1][n] << "\n";
cout << (dp[0][n]+dp[1][n]) % 1000000007 << "\n";
}
}