Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: wtpza

Problemset: ทางเชื่อม

Language: cpp

Time: 0.170 second

Submitted On: 2026-03-13 20:06:14

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

int main(){
    const long long MOD = 1000000007;
    cin.tie(0)->sync_with_stdio(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;
        vector<vector<long long>> dp(2, vector<long long>(a + 1, 0));
        dp[0][0] = 1;
        dp[1][0] = 1;
        for(int x = 1 ; x <=a ; 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] + dp[1][a]) % MOD;
        cout << ans << "\n";
    }
}