Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: devilpoohs

Problemset: ทางเชื่อม

Language: cpp

Time: 0.364 second

Submitted On: 2025-09-21 15:44:55

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
#define int long long
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;
    int mx=0;
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(ch=='#'){
            ar[i][0]=max(mx,ar[i][0]-1);
            ar[i-1][0]=max(mx,ar[i-1][0]-1);
        }
    }
    for(int i=1;i<=n;i++){
        cin>>ch;
        if(ch=='#'){
            ar[i][1]=max(mx,ar[i][1]-1);
            ar[i-1][1]=max(mx,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<<ar[i][0]+ar[i][1]<<',';
    }   
    // cout<<'\n';
    cout<<ans%mod<<'\n';
}

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