1 条题解

  • 1
    @ 2024-6-6 18:51:29

    如果一个数应该亮的位置没亮,说明一定不亮。

    如果一个数不该亮的位置亮了,说明一定常亮。

    我们根据生活常识把每种灯应该点亮的位置存下来,对于这两种情况判断即可。

    表格如下。请自行在程序内根据这个表格判断。

    0: A B C D E F 
    1: B C 
    2: A B D E G 
    3: A B C D G 
    4: B C F G 
    5: A C D F G 
    6: A C D E F G 
    7: A B C 
    8: A B C D E F G 
    9: A B C D F G 
    
    #include <bits/stdc++.h>
    using namespace std;
    vector<int> a[10];
    int n;
    string ans = "-------";
    int main()
    {
        a[0] = {0, 1, 2, 3, 4, 5};
        a[1] = {1, 2};
        a[2] = {0, 1, 3, 4, 6};
        a[3] = {0, 1, 2, 3, 6};
        a[4] = {1, 2, 5, 6};
        a[5] = {0, 2, 3, 5, 6};
        a[6] = {0, 2, 3, 4, 5, 6};
        a[7] = {0, 1, 2};
        a[8] = {0, 1, 2, 3, 4, 5, 6};
        a[9] = {0, 1, 2, 3, 5, 6};
        cin >> n;
        while (n--)
        {
            string s;
            cin >> s;
            int k = s[0] ^ '0';
            for (int i = 1; i < s.size(); i++)
            {
                bool ok = 0;
                for (int j : a[k])
                    if (j == s[i] - 'A')
                        ok = 1;
                if (!ok)
                    ans[s[i] - 'A'] = 'X';
            }
            for (int j : a[k])
            {
                bool ok = 0;
                for (int i = 1; i < s.size(); i++)
                    if (j == s[i] - 'A')
                        ok = 1;
                if (!ok)
                    ans[j] = 'x';
            }
        }
        cout << ans << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    957
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    17
    已通过
    12
    上传者