Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: kormuyang

Problemset: ทางเชื่อม

Language: cpp

Time: 0.535 second

Submitted On: 2025-12-15 12:36:08

#include <bits/stdc++.h>

using namespace std;

#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] == '#')) {
            ans = 0;
            break;
        }
    }
    if (s[0][n - 1] == '#' && s[1][n - 1] == '#') {
        ans = 0;
    } else if (s[0][n - 1] == '.' && s[1][n - 1] == '.') {
        ans = (ans * 2) % MOD;
    }
    cout << ans << '\n';
}

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