Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Banana777

Problemset: ทางเชื่อม

Language: cpp

Time: 0.339 second

Submitted On: 2026-03-01 20:41:09

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

const long long MOD=1e9+7;


vector<vector<char>> mp(2,vector<char> (5000));
vector<vector<long long>> val(2,vector<long long> (5000));

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);



    int m;
    cin>>m;
    
    for(int i =0;i<m;i++){
        
        int a;
        cin>>a;

        for(int m =0;m<2;m++){
            for(int j =0;j<a;j++){
                cin>>mp[m][j];
            }
        }

        if((mp[0][0]=='.')&&(mp[1][0]=='.')){
            val[0][0]=2;
            val[1][0]=2;
        }
        if((mp[1][0]=='.')&&(mp[0][0]=='#')){
            val[1][0]=1;
            val[0][0]=0;
        }
        if((mp[0][0]=='.')&&(mp[1][0]=='#')){
            val[0][0]=1;
            val[1][0]=0;
        }if((mp[0][0]=='#')&&(mp[1][0]=='#')){
            val[0][0]=0;
            val[1][0]=0;
        }
        

        for(int j=1;j<a;j++){
            if((mp[0][j]=='#')&&(mp[1][j]=='#')){
                val[0][j]=0;
                val[1][j]=0;
            }else if((mp[0][j]=='.')&&(mp[1][j]=='.')){
                val[0][j]=val[0][j-1]+val[1][j-1];
                val[1][j]=val[0][j-1]+val[1][j-1];
            }else if((mp[0][j]=='.')&&(mp[1][j]=='#')){
                val[1][j]=0;
                val[0][j]=val[0][j-1];
            }else if((mp[1][j]=='.')&&(mp[0][j]=='#')){
                val[1][j]=val[1][j-1];
                val[0][j]=0;
            }
            val[0][j]%=MOD;
            val[1][j]%=MOD;
            //emoji:skull
        }  
        
        
        long long ans=0;
        for(int m = 0;m<2;m++){
            ans+=val[m][a-1];
            ans%=MOD;
        }
        cout<<ans<<"\n";

    }











}