Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: wtpza

Problemset: ทางเชื่อม

Language: cpp

Time: 0.149 second

Submitted On: 2026-03-13 19:54:51

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

int main(){
    const int MOD = 100000007;
    cin.tie(0)->sync_with_stdio(0);
    const int direcy[]={0,1,-1};
    const int direcx[]={1,0,0};
    int n;
    cin >> n;
    for(int i = 0 ; i < n ; i++){
        int a;
        cin >> a;
        vector<string> wow(2);
        wow[0].push_back('?');
        wow[1].push_back('?');
        string jj, kk;
        cin >> jj >> kk;
        wow[0] += jj;
        wow[1] += kk;
        wow[0].push_back('?');
        wow[1].push_back('?');
        vector<vector<int>> dp(2, vector<int>(a + 2, 0));
        dp[0][0] = 1;
        dp[1][0] = 1;
        for(int x = 1 ; x < a + 2 ; x++){
            if(wow[0][x] != '#'){
                dp[0][x] = (dp[0][x] + dp[0][x-1]) % MOD;
                if(wow[1][x] != '#'){
                    dp[0][x] = (dp[0][x] + dp[1][x-1]) % MOD;
                }
            }
            if(wow[1][x] != '#'){
                dp[1][x] = (dp[1][x] + dp[1][x-1]) % MOD;
                
                if(wow[0][x] != '#'){
                    dp[1][x] = (dp[1][x] + dp[0][x-1]) % MOD;
                }
            }
        }
        
        int ans = (dp[0][a+1]/2 + dp[1][a+1]/2) % MOD;
        cout << ans << "\n";
    }
}