1 条题解

  • 0
    @ 2022-10-14 11:13:34

    既然只看和的个位数,那么每个数都可以只看个位数了

    #include <bits/stdc++.h>
    using namespace std;
    int t, n;
    int a[212345];
    int cnt[15]; //储存每个个位数出现了几次
    int main()
    {
        cin >> t;
        while (t--)
        {
            //输入
            cin >> n;
            for (int i = 1; i <= n; i++)
                cin >> a[i];
            //末尾数字只跟每个数的末位数字有关
            //统计一下每个末尾数字出现了几次
            for (int i = 0; i <= 9; i++)
                cnt[i] = 0;
            for (int i = 1; i <= n; i++)
                cnt[a[i] % 10]++;
            bool ans = false; //初始认为不存在
            for (int i = 0; i <= 9; i++)
                for (int j = 0; j <= 9; j++)
                    for (int k = 0; k <= 9; k++)
                    {
                        if ((i + j + k) % 10 != 3)
                            continue;
                        //初始认为存在三个数个位分别是 i,j,k
                        bool flag = true;
                        cnt[i]--;
                        cnt[j]--;
                        cnt[k]--;
                        if (cnt[i] < 0)
                            flag = false;
                        if (cnt[j] < 0)
                            flag = false;
                        if (cnt[k] < 0)
                            flag = false;
                        //更新答案
                        if (flag)
                            ans = true;
                        //还原cnt数组
                        cnt[i]++;
                        cnt[j]++;
                        cnt[k]++;
                    }
            if (ans)
                cout << "YES\n";
            else
                cout << "NO\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1105
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    16
    已通过
    4
    上传者