Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: hmmm
Problemset: ทางเชื่อม
Language: cpp
Time: 0.337 second
Submitted On: 2026-03-06 18:56:15
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; typedef pair<long long ,long long> pll; typedef pair<long long, pair<long long , long long >> plpll;
const int inf = 1e9+7;
int dx[8] = {0,0,-1,1,-1,1,-1,1} , dy[8] = {1,-1,0,0,1,-1,1,-1};
#define F first
#define S second
#define FAST_IO ios_base::sync_with_stdio(false); cin.tie(NULL);
vector<vector<char>> vec(2 , vector<char> (5000+5,' '));
vector<vector<ll>> dp(2,vector<ll> (5000+5,0));
void solve(){
int n;
cin>>n;
for(int i=0;i<2;i++){
for(int j=1;j<=n;j++){
cin >> vec[i][j];
}
}
dp[0][0]=1;
dp[1][0]=1;
ll ans =0;
for(int j=1;j<=n;j++){
if(vec[0][j] == '.' && vec[1][j] == '.') {
dp[0][j] = (dp[0][j-1]+dp[1][j-1])%inf;
dp[1][j] = (dp[0][j-1]+dp[1][j-1])%inf;
}
else if(vec[0][j] == '.' && vec[1][j] == '#') {
dp[0][j] = dp[0][j-1];
dp[1][j] = 0;
}
else if(vec[0][j] == '#' && vec[1][j] == '.') {
dp[0][j] = 0;
dp[1][j] = dp[1][j-1];
}
else{
dp[0][j] = 0;
dp[1][j] = 0;
}
// cout << dp[0][1] << ' ' << dp[][]
}
cout<<(dp[0][n]+dp[1][n])%inf<<"\n";
}
signed main(){
FAST_IO
int q;
cin>>q;
while(q--){
solve();
}
return 0;
}
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \| |// `.
/ \||| : |||// \
/ _||||| -:- |||||- \
| | \ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pass System Test!
*/