Submission

Status:

PPx----x-x

Score: 20

User: Dormon

Problemset: ทางเชื่อม

Language: cpp

Time: 0.148 second

Submitted On: 2025-04-30 22:33:51

#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])
            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();
    }
}