Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: C12

Problemset: ทางเชื่อม

Language: cpp

Time: 0.285 second

Submitted On: 2026-01-08 00:45:46

#include <bits/stdc++.h>
using namespace std;

#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define tiiii tuple<ll,ll,ll,ll>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mt make_tuple
 
#define mpiiii(a,b,c) make_pair(a,make_pair(b,c));
// ll mod = 1000000007;

ll n;
bool board[2][5001];

void solve(){
    cin >> n;
    char t;

    for(int i = 0;i < n;i++){
        cin >> t;
        if(t == '.'){
            board[0][i] = 1;
        }
        else{
            board[0][i] = 0;
        }
    }
    for(int i = 0;i < n;i++){
        cin >> t;
        if(t == '.'){
            board[1][i] = 1;
        }
        else{
            board[1][i] = 0;
        }
    }

    ll prev[2],curr[2];
    prev[0] = 1;
    prev[1] = 1;
    for(int i = 0;i < n;i++){
        curr[0] = 0;
        curr[1] = 0;
        if(board[0][i]){
            curr[0] += prev[0];
        }
        if(board[1][i])
        {
            curr[1] += prev[1];
        }
        if(board[0][i] && board[1][i]){
            curr[0] += prev[1];
            curr[1] += prev[0];
        }
        prev[0] = curr[0];
        prev[1] = curr[1];
    }

    cout << (curr[0] + curr[1]) << '\n';

    return;
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll q;
 
    cin >> q;

    while(q--)
        solve(); 

    return 0;
}
/*
3
1
.
.
2
..
..
2
.#
..

*/