Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: kormuyang

Problemset: ทางเชื่อม

Language: cpp

Time: 0.466 second

Submitted On: 2025-12-15 12:43:06

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define MOD (int)(1e9 + 7)

void solve() {
    int n;
    vector<string> s(2);
    cin >> n >> s[0] >> s[1];
    int ans = (s[0][0] == '.') + (s[1][0] == '.');
    for (int i = 0; i < n - 1; i++) {
        if (s[0][i] == '.' && s[1][i] == '.' && s[0][i + 1] == '.' && s[1][i + 1] == '.') {
            ans = (ans * 2) % MOD;
        } else if ((s[0][i] == '#' || s[0][i + 1] == '#') && (s[1][i] == '#' || s[1][i + 1] == '#')) {
            cout << "0\n";
            return;
        }
    }
    if (s[0][n - 1] == '.' && s[1][n - 1] == '.') {
        ans = (ans * 2) % MOD;
    }
    cout << ans << '\n';
}

int32_t main() {
    int q;
    cin >> q;
    while (q--) {
        solve();
    }
    return 0;
}