Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: Banana777

Problemset: ทางเชื่อม

Language: cpp

Time: 0.915 second

Submitted On: 2026-03-01 20:38:24

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

const long long MOD=1e9+7;

int main(){
    int m;
    cin>>m;
    
    for(int i =0;i<m;i++){
        
        int a;
        cin>>a;
        vector<vector<char>> mp(2,vector<char> (a));
        vector<vector<long long>> val(2,vector<long long> (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";

    }











}