In this Leetcode A subset in a sequence problem solution You are given a set S consisting of non-negative powers of three S = {1, 3, 9, 27, ...}. Consider the sequence of all non-empty subsets of S ordered by the value of the sum of their elements. You are also given a single element n. You are required to find the subset at the nth position in the sequence and print it in increasing order of its elements.


HackerEarth A subset in a sequence problem solution


HackerEarth A subset in a sequence problem solution.

#include<bits/stdc++.h>
#define int long long int
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
using namespace std;

int poww(int n,int p)
{
  int power=1;
  for(int i=0;i<p;i++)
  {
    power=power*n;
  }
  return power;
}

int32_t main()
{
  fast;
  int t;
  cin>>t;
  while(t--)
  {
    int n,cnt=0,x;
    cin>>n;
    vector<int> v;
    while(n)
    {
      x=n&1;
      if(x)
      {
        v.push_back(poww(3,cnt));
      }
      n=n>>1;
      cnt++;
    }
    cout<<v.size()<<'\n';
    for(int i=0;i<v.size();i++)
    {
        cout<<v[i]<<" ";
    }
    cout<<'\n';
  }
}

Second solution

t = int(input())
while t > 0:
    n = int(input())
    a = []
    for i in range(0, 40):
        if n >> i & 1:
            a.append(3 ** i)
    print(len(a))
    print(*a)
    t -= 1