Submission
Status:
PP--------
Subtask/Task Score:
20/100
Score: 20
User: sorrkub
Problemset: ทางเชื่อม
Language: cpp
Time: 0.336 second
Submitted On: 2026-03-06 18:27:35
#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);
void solve(){
int n;
cin>>n;
vector<vector<char>> vec(2 , vector<char> (n,'0'));
for(int i=0;i<n;i++){
cin>>vec[0][i];
}
for(int i=0;i<n;i++){
cin>>vec[1][i];
}
vector<vector<ll>> dp(2,vector<ll> (n,0));
if(vec[0][0] == '.' && vec[1][0] == '.'){
dp[0][0] = 2;
dp[1][0] = 2;
}
else if(vec[0][0] =='#' && vec[1][0] == '.'){
dp[1][0] = 1;
}
else if(vec[0][0] == '.' && vec[1][0] == '#'){
dp[0][0] = 1;
}
else{
dp[0][0] =0 ;
dp[1][0] = 0;
}
ll ans =0;
for(int i=1;i<n;i++){
if(vec[0][i] == '.' && vec[1][i] == '.'){
dp[0][i] = (dp[0][i-1] + dp[1][i-1] )%inf;
dp[1][i] = dp[0][i] % inf;
}
else if(vec[0][i] =='#' && vec[1][i] == '.'){
dp[1][i] = dp[1][i-1]%inf;
}
else if(vec[0][i] == '.' && vec[1][i] == '#'){
dp[0][i] = dp[0][i-1]%inf;
}
}
cout<<(dp[0][n-1]+dp[1][n-1])%inf<<"\n";
}
signed main(){
FAST_IO
int q=1;
cin>>q;
while(q--){
solve();
}
return 0;
}
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \| |// `.
/ \||| : |||// \
/ _||||| -:- |||||- \
| | \ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pass System Test!
*/