1 条题解

  • 1

    so easy

    #include <iostream>
    #include <string>
    #include <cstring>
    using namespace std;
    
    // 0~9标准点亮段
    string std_seg[10] = {
        "ABCDEF",   //0
        "BC",       //1
        "ABDEG",    //2
        "ABCDG",    //3
        "BCFG",     //4
        "ACDFG",    //5
        "ACDEFG",   //6
        "ABC",      //7
        "ABCDEFG",  //8
        "ABCDFG"    //9
    };
    
    // ans[0]A ans[1]B ... ans[6]G,初始全'-'
    char ans[7] = {'-','-','-','-','-','-','-'};
    // 下标映射:A→0,B→1,C→2,D→3,E→4,F→5,G→6
    int getidx(char c){
        return c-'A';
    }
    
    int main(){
        int n;
        cin>>n;
        string log[105];
        for(int i=0;i<n;i++){
            cin>>log[i];
        }
    
        // 枚举A~G每一根灯管
        for(char ch='A';ch<='G';ch++){
            int pos = getidx(ch);
            // 已经确定x/X就不用再改
            if(ans[pos]!='-') continue;
    
            for(int i=0;i<n;i++){
                string s = log[i];
                int k = s[0]-'0';        //真实数字
                string show = s.substr(1); //实际亮起的段
    
                // ch是否是k标准该亮的
                bool in_std = (std_seg[k].find(ch)!=string::npos);
                // ch是否实际亮起
                bool in_show = (show.find(ch)!=string::npos);
    
                if(in_std && !in_show){
                    //本该亮却没亮 → 永久不亮 x
                    ans[pos]='x';
                    break;
                }
                if(!in_std && in_show){
                    //不该亮却亮了 → 永久常亮 X
                    ans[pos]='X';
                    break;
                }
            }
        }
    
        //依次输出A B C D E F G
        for(int i=0;i<7;i++) cout<<ans[i];
        return 0;
    }
    
  • 1

信息

ID
3113
难度
9
分类
(无)
标签
递交数
2
已通过
2
通过率
100%
上传者