Submission
Status:
PP--x---x-
Score: 20
User: Dormon
Problemset: ทางเชื่อม
Language: cpp
Time: 0.148 second
Submitted On: 2025-04-30 22:38:57
#include <iostream>
#include <vector>
#include <array>
using namespace std;
using ll = long long;
const ll 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<ll, 2>> dp(n + 1, {0ll, 0ll});
dp[0][0] = dp[0][1] = 1ll;
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] && grid[i][1])
dp[i][0] = dp[i - 1][0];
else if (!grid[i][1] && grid[i][0])
dp[i][1] = dp[i - 1][1];
}
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();
}
}