1 条题解

  • 1
    @ 2022-8-30 10:01:11
    #include<bits/stdc++.h>
    using namespace std;
    int m,sum=1,a[100005];
    int main()
    {
        cin>>m;
        while(m>0)//核心
          {
              m%2==0?a[sum]=m/2:a[sum]=m/2+1;//这一坨等价于if(m%2==0) a[sum]=m/2; else a[sum]=m/2+1;
            m/=2;//分治,防止死循环;
              sum++;
          }
        sum--;//sum会多出1
        sort(a+1,a+sum+1);//排序
        cout<<sum<<endl;
        for(int i=1;i<=sum;i++)
          cout<<a[i]<<" ";  //愉快输出
        return 0;
    }
    
    • 1

    信息

    ID
    1271
    时间
    1000ms
    内存
    125MiB
    难度
    4
    标签
    递交数
    3
    已通过
    3
    上传者