Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: boss

Problemset: ทางเชื่อม

Language: cpp

Time: 0.361 second

Submitted On: 2026-05-10 11:55:13

#include<bits/stdc++.h>
using namespace std;
char arr[2][5005];
long long dp[2][5005];
const int  N=1e9+7;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		memset(dp,0,sizeof dp);
		int x;
		cin>>x;
		for(int ii=0;ii<2;ii++)
		{
			for(int j=1;j<=x;j++)
			{
				cin>>arr[ii][j];
				
			}
		}
		dp[0][0]=1;
		dp[1][0]=1;
		for(int j=1;j<=x;j++)
		{
			if(arr[0][j]=='#'&&arr[1][j]=='.')
			{
				dp[1][j]=dp[1][j-1]%N;	
			}	
			else if(arr[1][j]=='#'&&arr[0][j]=='.')
			{
				dp[0][j]=dp[0][j-1]%N;
			}
			else if(arr[1][j]=='#'&&arr[0][j]=='#')
			{
				
				break;
			}
			else if(arr[1][j]=='.'&&arr[0][j]=='.')
			{
				dp[0][j]=(dp[0][j-1]+dp[1][j-1])%N;
				dp[1][j]=(dp[0][j-1]+dp[1][j-1])%N;
			}
				
		}
	
		cout<<(dp[0][x]+dp[1][x])%N<<"\n";
	
		
	}
	
	return 0;
}