Submission

Status:

PP--------

Subtask/Task Score:

20/100

Score: 20

User: kavin8888

Problemset: ทางเชื่อม

Language: cpp

Time: 0.379 second

Submitted On: 2026-03-05 20:00:49

#include<bits/stdc++.h>
using namespace std; 
#define int long long
const int MAX_N=5054;
const int MOD=1e9+7;
int t;
vector<vector<int>> dp;
vector<vector<char>> a;
void solve() {
	int n; cin>>n;
	a.assign(5,vector<char>(MAX_N+5));
	dp.assign(5,vector<int>(MAX_N+5));
	for(int i=1;i<=2;++i) 
		for(int j=1;j<=n;++j)
			cin>>a[i][j];
	for(int i=1;i<=n;++i) {
		if(a[1][i]=='#' && a[2][i]=='#') {
			cout<<"0"<<'\n';
			return;
		}
	}
	dp[1][0]=dp[2][0]=1;
	for(int i=1;i<=n;++i) {
		if(a[1][i]=='#' && a[2][i]=='.') dp[2][i]=(dp[2][i-1])%MOD;
		else if(a[2][i]=='#' && a[1][i]=='.') dp[1][i]=(dp[1][i-1])%MOD;
		else if(a[1][i]=='.' && a[2][i]=='.') {
			dp[1][i]=(dp[1][i-1]+dp[2][i-1])%MOD;
			dp[2][i]=(dp[2][i-1]+dp[1][i-1])%MOD;
		} 
	}
	cout<<(dp[1][n]+dp[2][n])%MOD<<'\n';
	return;
}
signed main(void) {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>t;
	while(t--) {
		solve();
	}
	return 0;
}