Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: devilpoohs

Problemset: ทางเชื่อม

Language: cpp

Time: 0.367 second

Submitted On: 2025-09-21 15:39:08

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;

void solve(){
    int n;
    cin>>n;
    int ar[n+1][2];
    for(int i=0;i<=n;i++){
        ar[i][0]=1;
        ar[i][1]=1;
    }
    char ch;
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(ch=='#'){
            ar[i][0]=max(0,ar[i][0]-1);
            ar[i-1][0]=max(0,ar[i-1][0]-1);
        }
    }
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(ch=='#'){
            ar[i][1]=max(0,ar[i][1]-1);
            ar[i-1][1]=max(0,ar[i-1][1]-1);
        }
    }
    int ans=1;
    for(int i=0;i<=n;i++){
        ans=(ans*(ar[i][0]+ar[i][1]))%mod;
    }   
    cout<<ans%mod<<'\n';
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int q;
    cin>>q;
    while(q--){
        solve();
    }
    return 0;
}
/*
3 
1 
. 
. 
2 
.. 
.. 
2 
.# 
.. 
*/