2 条题解

  • 3
    @ 2023-07-02 12:43:54
    #include<bits/stdc++.h>
    using namespace std;
    void p(int x)
    {
        int a[14],k=0,i=0,cnt=0;
        while(x)
        {
            int m=x%2;
            if(m==1)
            {
                a[cnt++]=k;
            }
            x/=2;
            k++;
        }
        for(i=cnt-1;i>=0;i--)
        {
            if(a[i]==0)
                cout<<"2(0)";
            else if(a[i]==1)
                cout<<"2";
            else if(a[i]==2)
                cout<<"2(2)";
            else
            {
                cout<<"2(";
                p(a[i]);
                cout<<")";
            }
            if(i!=0)
                cout<<"+";
        }
    }
    int main()
    {
        int n;cin>>n;
        p(n);
        return 0;
    }
    
  • 2
    #include<bits/stdc++.h>
    #include<cstdlib>
    #include<cstring>
    using namespace std;
    
    void f(int n)
    {
        if(n==1)
        {
            cout<<"2(0)";
            return;
        }
        if(n==2)
        {
            cout<<"2";
            return;
        }
        int i=1,s=0;
        while(i<=n)
        {
            i=i*2;
            s++;
        }s--;
        if(n==i/2)
        {
            cout<<"2(";
            f(s);
            cout<<")";  
        }
        else
        {
            if(i/2==2)
            {
                cout<<"2+";
                f(n-i/2);
            }
            else
            {
                cout<<"2(";
                f(s);
                cout<<")+";
                f(n-i/2);
            }
        }
    }
     
    int main()
    {
        int n;
        cin>>n;
        f(n);
    }
    
  • 1

信息

ID
1500
难度
4
分类
(无)
标签
递交数
51
已通过
24
通过率
47%
被复制
4
上传者