Header Ad

HackerEarth A subset in a sequence problem solution

In this HackerEarth 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

Post a Comment

0 Comments