麻烦大佬们debug一下,谢谢啦

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> PII;
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N=1e5+5;
const int mod1=1e9+7;
const int mod2=2146516019;
const int mod3=998244353;

ll n,m;

void solve(){
    cin>>n;
    vector<string> vs(3);
    for(int i=0;i<3;i++) cin>>vs[i];
    
    vector<set<int>> s(3);
    int f=1;
    for(int i=0;i<n;i++){
        set<int> t;
        for(int j=0;j<3;j++){
            if(vs[j][i]=='?'){
                a[i]++;
                continue;
            }
            vs[j][i]-='0';
            if(t.count(vs[j][i])) f=0;
            t.insert(vs[j][i]);
        }
        s[i%3].merge(t);
    }
    vector<int> mb;
    for(auto t:s){
        if(t.size()>3) f=0;
        int x=0;
        for(int tt:t){
            x^=(1<<tt);
        }
        mb.push_back(x);
    }
    if(f==0){
        cout<<0<<'\n';
        return;
    }
    ll ans=1;
    for(int i=3;i<n;i++){
        if(a[i]==2) ans=ans*2%mod1;
        if(a[i]==3) ans=ans*6%mod1;
    }
    ll res=0;
    vector<int> v(9);
    iota(v.begin(),v.end(),1);
    
    do{
        int x=0,f=1;
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                if(vs[i][j]=='?') continue;
                x=i*3+j;
                if(vs[i][j]!=v[x]) f=0;
            }
        }
        x=(1<<v[0])+(1<<v[3])+(1<<v[6]);
        if(x!=(x|mb[0])) f=0;
        x=(1<<v[1])+(1<<v[4])+(1<<v[7]);
        if(x!=(x|mb[1])) f=0;
        x=(1<<v[2])+(1<<v[5])+(1<<v[8]);
        if(x!=(x|mb[2])) f=0;
        if(f==0) continue;
        res=(res+ans)%mod1;
        //cout<<res<<'\n';
    }while(next_permutation(v.begin(),v.end()));
    
    cout<<res%mod1<<'\n';
}

int main(){
    IOS;
    int T=1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-12 18:53
第一次听说还有无水工作!!!又是被刷新三观的一天
Lynn012:666第一次听到,你给他说这里不方便我们加个微信
点赞 评论 收藏
分享
Twilight_mu:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
学java时间比较短不到三个月,基本的技术栈都过了一遍就是都不太深,有个小项目。是继续找实习还是沉淀准备秋招呢?找实习的话会花很多时间在八股,放弃的话又怕秋招简历太难看。有无大佬支招
今天java了吗:1.一定要找实习,实习不一定要去,但是找实习过程中的面试经验和心态经验才是最重要的 2.八股本来就是大头,甚至比项目重要 3.这个时间段也是面试比较多的阶段,可以抓住机会锻炼。面试才会发现自己的不足,感觉自己会了和能给面试官娓娓道来是两码事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务