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;
}