Submission

Status:

TTTTTTTTTT

Subtask/Task Score:

0/100

Score: 0

User: devilpoohs

Problemset: ทางเชื่อม

Language: cpp

Time: 1.097 second

Submitted On: 2025-09-21 16:25:18

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n;
int think(int i,int j,vector<vector<bool>>& ar){
    
    if(j==0){
        return 1;
    }
    int cnt=0;
    if(j==n+1){
        if(ar[0][n]==true){
            cnt+=think(0,n,ar);
        }
        if(ar[1][n]==true){
            cnt+=think(1,n,ar);
        }
    }else if(i==0){
        if(ar[0][j-1]==true){
            cnt+=think(0,j-1,ar);
        }
        if(ar[1][j-1]==true){
            cnt+=think(1,j-1,ar);
        }
    }
    if(i==1){
        if(ar[0][j-1]==true) {
            cnt+=think(0,j-1,ar);
        }
        if(ar[1][j-1]==true){
            cnt+=think(1,j-1,ar);
        }
    }
    
    return cnt%mod;
}

void solve(){
    cin>>n;
    vector<vector<bool>> ar(2,vector<bool>(n+1));
    char ch;
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(ch=='#') ar[0][i-1]=ar[0][i]=false;
        else ar[0][i-1]=ar[0][i]=true;
    }
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(ch=='#') ar[1][i-1]=ar[1][i]=false;
        else ar[1][i-1]=ar[1][i]=true;
    }
    // for(int i=0;i<2;i++){
    //     for(int j=0;j<=n;j++){
    //         if(ar[i][j]) cout<<'Y';
    //         else cout<<'N';
    //     }
    //     cout<<'\n';
    // }
    cout<<think(0,n+1,ar)<<'\n';
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int q;
    cin>>q;
    while(q--){
        solve();
    }
    // cout<<mod;
    return 0;
}
/*
3 
1 
#
. 
2 
.#
.#
3
.#. 
..#

3 
1 
. 
. 
2 
.. 
.. 
2 
.# 
..
*/