1 solutions

  • 0
    @ 2024-6-14 14:51:51

    模拟(100pts)

    • 首先任何一个数一定可以被唯一表示成一个二进制数,且奇数的最低位一定存在,所以奇数一定不是优秀的拆分,对于偶数我们可以利用位运算,从高到低依次枚举每一位。
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        if(n%2==1) //奇数一定不是优秀的拆分
        {
            cout<<-1;
        }
        else
        {
            for(int i=24;i>=1;i--) //从高位开始枚举
            {
                if(n>>i&1)
                    cout<<(1<<i)<<" ";
            }
        }
        return 0;
    }
    
    • 1

    Information

    ID
    1067
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    3
    Accepted
    3
    Uploaded By