Submission
Status:
PPxxx-----
Score: 20
User: Dormon
Problemset: ทางเชื่อม
Language: cpp
Time: 0.122 second
Submitted On: 2025-04-30 22:29:24
#include <iostream>
#include <vector>
#include <array>
using namespace std;
const int mod = 1e9 + 7;
void solve(){
int n;
cin >> n;
vector<array<bool, 2>> grid(n + 1);
for (int i = 0;i < 2;i++){
string s;
cin >> s;
for (int j = 1;j <= n;j++)
grid[j][i] = (s[j - 1] == '#');
}
vector<array<int, 2>> dp(n + 1);
dp[0][0] = dp[0][1] = 1;
for (int i = 1;i <= n;i++){
if (!grid[i][0] && !grid[i][1]){
dp[i][0] = (dp[i - 1][0] + dp[i - 1][1]) % mod;
dp[i][1] = (dp[i - 1][0] + dp[i - 1][1]) % mod;
}
else if (!grid[i][0])
dp[i][1] = dp[i - 1][1];
else
dp[i][0] = dp[i - 1][0];
}
cout << (dp[n][0] + dp[n][1]) % mod << '\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int q;
cin >> q;
while (q--){
solve();
}
}