2 条题解

  • 0
    @ 2025-10-8 16:52:50
    #include<bits/stdc++.h>
    using namespace std;
     
    int d[15]; 
     
    void dfs(int n) 
    {
        int k;
        for (k=14;k>=0;k--) if (d[k] <= n) break;
        if (k == 0) cout << "2(0)";
        else if (k == 1) cout << 2;
        else if (k == 2) cout << "2(2)";
        else {
            cout <<"2(";
            dfs(k);
            cout << ")";
        }
        if (d[k] < n) {
            cout << "+";
            dfs(n - d[k]);
        }
    }
     
    int main()
    {
        d[0] = 1;for(int i=1; i <= 14; i++)d[i]=d[i-1]*2;
        int n; cin>>n;
        dfs(n);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:52:40
      #include<bits/stdc++.h>
      using namespace std;
       
      int d[15]; 
       
      void dfs(int n) 
      {
          int k;
          for (k=14;k>=0;k--) if (d[k] <= n) break;
          if (k == 0) cout << "2(0)";
          else if (k == 1) cout << 2;
          else if (k == 2) cout << "2(2)";
          else {
              cout <<"2(";
              dfs(k);
              cout << ")";
          }
          if (d[k] < n) {
              cout << "+";
              dfs(n - d[k]);
          }
      }
       
      int main()
      {
          d[0] = 1;for(int i=1; i <= 14; i++)d[i]=d[i-1]*2;
          int n; cin>>n;
          dfs(n);
          return 0;
      }
      • 1

      *【递归】2的幂次方表示(未解决)

      信息

      ID
      630
      时间
      1000ms
      内存
      64MiB
      难度
      9
      标签
      递交数
      9
      已通过
      6
      上传者