Submission
Status:
PP--------
Subtask/Task Score:
20/100
Score: 20
User: krittaphot
Problemset: ทางเชื่อม
Language: cpp
Time: 0.367 second
Submitted On: 2026-03-04 14:17:12
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long q;
cin >> q;
while(q--){
long long n;
cin >> n;
vector<vector<long long>> dp(2,vector<long long> (n+1,0));
dp[0][0] = 1;
dp[1][0] = 1;
vector<vector<bool>> mp(2,vector<bool> (n+1,true));
for(long long i = 0;i<2;i++){
for(long long j = 1;j<n+1;j++){
char c;
cin >> c;
if(c == '#'){
mp[i][j] = false;
}
}
}
//
// 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] == false && mp[1][j] == true){
dp[0][j] = 0;
dp[1][j] = dp[1][j-1] % 1000000007;
}
else if(mp[0][j] == true && mp[1][j] == false){
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";
}
}