4 条题解

  • 0
    @ 2023-1-14 19:33:44
    #include<bits/stdc++.h>
    using namespace std;
    int mypow(int n, int lun)//按照规则平方
    {
        int sum = 0;
        while (n)
        {
            int t = n % 10;
            sum += pow(t, lun);
            n /= 10;
        }
        return sum;
    }
    struct ac
    {
        int id;//编号
        int panduan;//判断是否淘汰  0淘汰
        int hou;//编号计算之后存放
    }a[1000];
    int main()
    {
        int n;
        while (cin >> n)//轮数
        {
            int t = 0;
            while (cin >> a[t].id)//输入编号
                a[t++].panduan = 1;//判断先置1  表示不出局
            for (int i = 1;i <= n;i++)//进行几轮操作
            {
                for (int j = 0;j < t;j++)
                    if (a[j].panduan)//判断是否出局
                        a[j].hou = mypow(a[j].id, i + 1);//平方运算
                for (int j = 0;j < t;j++)
                    for (int q = 0;q < t;q++)
                        if (a[j].id == a[q].hou && a[j].panduan)
                            a[j].panduan = 0;//出局
            }
            int b[10000], q = 0;
            for (int i = 0;i < t;i++)
                if (a[i].panduan)
                    b[q++] = a[i].id;
            sort(b, b + q);//从小到大排序
            for (int i = 0;i < q;i++)
                cout << b[i] << " ";
            cout << endl;
        }
    }
    

    信息

    ID
    1002
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    451
    已通过
    153
    上传者