Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: krittaphot

Problemset: ทางเชื่อม

Language: cpp

Time: 0.357 second

Submitted On: 2026-03-04 14:22:33

#include <bits/stdc++.h>

using namespace std;

char mp[2][5001];
int dp[2][5001];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	long long q;
	cin >> q;
	while(q--){
		long long n;
		cin >> n;
		dp[0][0] = 1;
		dp[1][0] = 1;
		for(long long i = 0;i<2;i++){
			for(long long j = 1;j<n+1;j++){
				cin >> mp[i][j];
			}
		}
//		
//		for(long long i = 0;i<2;i++){
//			for(long long j = 0;j<n+1;j++){
//				cout << mp[i][j] << " ";
//			}
//			cout << "\n";
//		}
	
		for(long long j = 1;j<n+1;j++){
			if(mp[0][j] == '.' && mp[1][j] == '.'){
				dp[0][j] = (dp[0][j-1] + dp[1][j-1]) % 1000000007;
				dp[1][j] = (dp[0][j-1] + dp[1][j-1]) % 1000000007;
			}
			else if(mp[0][j] == '#' && mp[1][j] == '.'){
				dp[0][j] = 0;
				dp[1][j] = dp[1][j-1] % 1000000007;
			}
			else if(mp[0][j] == '.' && mp[1][j] == '#'){
				dp[0][j] = dp[0][j-1]% 1000000007;
				dp[1][j] = 0;
			}
			else{
				dp[0][j] = 0;
				dp[1][j] = 0;
			}
		}
		
//		cout << dp[0][n] << " " << dp[1][n] << "\n";
		cout << (dp[0][n]+dp[1][n])  % 1000000007 << "\n";
	}
}