zoukankan      html  css  js  c++  java
  • 华东202011月赛补题

    E. 布尔表达式

    题意:

    给一个n,一个长度为pow(2,n)长度的01串s;

    构造一个布尔表达式f(a1,a2,…,an)

    对于s的第i个值表示当i二进制表示时

    每位对于aj使得表达式的值为s[i]

    解法:

    对于s[i]=0不用处理

    对于s[i]=1输出其主析取范式即可

    如果s串全为0,则输出0

    AC代码:

    #include<bits/stdc++.h>
    
    using namespace std;
    int n,siz;
    bool flag=0;
    void solve(int now){
        vector<int> v;
        int cnt=1;
        for(int i=0;i<n;i++){
            if(now&cnt)
                v.push_back(1);
            else
                v.push_back(0);
            cnt<<=1;
        }
        reverse(v.begin(),v.end());
        if(flag){
            cout<<"O ";
        }else{
            flag=1;
        }
        /*
        for(int i=0;i<n;i++)
            cout<<v[i]<<' ';
        cout<<endl;
        */
        for(int i=0;i<n;i++){
            if(v[i]){
                if(i)
                    cout<<"A ";
                cout<<'a'<<i+1;
                if(now!=siz-1||i!=n-1)
                    cout<<' ';
            }else{
                if(i)
                    cout<<"A ";
                cout<<"N a"<<i+1;
                if(now!=siz-1||i!=n-1)
                    cout<<' ';
            }
        }
    }
    int main(){
        cin>>n;
        string s;
        cin>>s;
        siz=s.length();
        for(int i=0;i<siz;i++){
            if(s[i]-'0')
                solve(i);
        }
        if(s.find('1')==-1) cout<<0<<endl;
    }
  • 相关阅读:
    Vue
    Vue
    Vue
    Vue
    Vue
    kubernetes
    kubernetes
    kubernetes
    django源码bug解决方案
    UNI-APP 桌面LOGO角标设置(ios)
  • 原文地址:https://www.cnblogs.com/xuanzo/p/14099187.html
Copyright © 2011-2022 走看看