1 条题解

  • 0
    @ 2026-4-5 22:13:03

    虽然只有一种味道,但真的很 鲜~

    葵花籽味

    #include <cmath> //abs
    #include <cstdio> //scanf, printf
    #include <string> //string
    #include <iostream> //cin
    #include <algorithm> //sort
    using namespace std;
    
    int mp[25][25], choose[25]; //choose:找出的16个数字
    
    class cnter
    {
    public:
        int num, cnt; //还要知道是什么数字,排序之后才不会乱
    } cnt[260];
    
    int main()
    {
        int n;
        scanf("%d", &n);
        int m;
        for(int i=1;i<=n;i++)
        {
            string str;
            cin >> str;
            m = str.size()/2;
            for(int j=1;j<=m;j++)
            {
                char c1 = str[j*2-2], c2 = str[j*2-1];
                int a1, a2;
                if(c1 >= '0' && c1 <= '9') a1 = c1 - '0';
                else a1 = c1 - 'A' + 10;
                if(c2 >= '0' && c2 <= '9') a2 = c2 - '0';
                else a2 = c2 - 'A' + 10;
                mp[i][j] = a1*16+a2; //16 to 10
                cnt[mp[i][j]].cnt++; //计数++
                cnt[mp[i][j]].num = mp[i][j]; //设置数字
            }
        }
        sort(cnt, cnt + 256, [](cnter x, cnter y) { return x.cnt > y.cnt || x.cnt == y.cnt && x.num < y.num; }); //排序
        for(int i=0;i<16;i++)
        {
            choose[i] = cnt[i].num;
            int a = choose[i]/16, b = choose[i]%16;
            printf("%c%c", (a <= 9)?(a + '0'):(a + 'A' - 10), (b <= 9)?(b + '0'):(b + 'A' - 10)); //10 to 16
            //printf(":%d\n", cnt[i].cnt); //debug语句
        }
        putchar('\n');
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                int num = mp[i][j];
                int minn = 2147483647, mink;
                for(int k=0;k<16;k++)
                {
                    if(abs(num - choose[k]) < minn)
                    {
                        minn = abs(num - choose[k]);
                        mink = k;
                    }
                }
                putchar(mink <= 9 ? mink+'0' : (mink + 'A' - 10)); //10 to 16
            }
            puts("");
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    3450
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    7
    已通过
    3
    上传者