1 条题解

  • 0
    @ 2025-4-9 20:41:47

    题解

    我们只需要将十进制数转换成二进制,然后遍历找到其二进制序列中“1”的数量,即可拆分出的加数(每个加数为 2x2^x 的形式)的数量,代表相应的移位操作数,加法操作数为移位操作数-1,故可得结果。

    代码

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int x;
            cin>>x;
            int cnt=0;
            while(x>0)
            {
                int temp=x%2;
                if(temp==1) cnt++;
                x/=2; 
            }
            ll ans=cnt+100*(cnt-1);
            cout<<ans<<endl;
        }
    
       return 0;
    }
    
    • 1

    信息

    ID
    384
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    (无)
    递交数
    37
    已通过
    26
    上传者