1 条题解

  • 1
    @ 2026-4-10 19:54:24

    这题还挺简单的,先判断怪物剩余血量是否是质数,如果是就直接击败,如果不是就先用普通攻击,魔法攻击留到最后终结怪物,这样是最快的。

    #include <bits/stdc++.h>
    using namespace std;
    
    int isPrime(int x)
    {
        if (x < 2) return 0;
        for (int i = 2; i <= x - 1; i++)
        {
            if (x % i == 0) return false;
        }
        return true;
    }
    
    int main()
    {
        int n, m;
        cin >> n;
        int cnt = 0;
        for (int i = 1; i <= n; i++)
        {
            cin >> m;
            cnt = 0;
            while (m > 0)
            {
                if (isPrime(m))
                {
                    cnt++;
                    m = 0;
                    break;
                }
                cnt++;
                m -= pow(2, cnt - 1);
            }
            if (m == 0) cout << cnt << endl;
            else cout << "-1" << endl;
        }
        return 0;
    }
    

    给个赞吧!!!

    • 1

    信息

    ID
    3311
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    47
    已通过
    9
    上传者