Code360 powered by Coding Ninjas X Naukri.com. Code360 powered by Coding Ninjas X Naukri.com

Sort Integers by Factor Value

Moderate
0/80
Average time to solve is 30m
profile
Contributed by
1 upvote
Asked in companies
MicrosoftZoho Corporation

Problem statement

You have been given an array/list ‘ARR’ of integers consisting of ‘N’ integers. The factor value is the number of following operations it takes for the number to become 1.

The two operations are as follows:-

If ‘x’ is even then ‘x’ will become ‘x / 2’.

If ‘x’ is odd then ‘x’ will become ‘x * 3 + 1’.

Your need to sort them in increasing order of factor value i.e. if two integers have the same factor value then sort in increasing order of their value. Your task is to return the ‘K-th’ value in the list after sorting.

Example:
Let’s say you have an array/list [1, 3, 4, 5] and ‘K’=2. The factor values are [0, 7, 2, 5] respectively. Finally, our array will look like [1, 4, 5, 3]. Since ‘K’ is 2 return 4.
Detailed explanation ( Input/output format, Notes, Images )
Constraints:
1 <= T <= 10
1 <= N <= 1000
1 <= K <= N
1 <= ‘ARR[i]’ <= 10 ^ 4

Where ‘ARR[i]’ is an element of array/list ARR.  

Time Limit: 1sec
Sample Input 1:
2
4 4
1 2 3 4 
2 1
13 12
Sample Output 1:
3
12

Sample Output 1 Explanation:

Test case 1:

The factor values of [1, 2, 3, 4] are [0, 1, 7, 2]. The array/list will become [1, 2, 4, 3] on sorting according to factor value.

Therefore the answer is 3.

Test case 2:

Both 12 and 13 have a factor value of 9. Since they have the same factor value we will sort them according to their value. Therefore on sorting ‘arr’ will be [12,13].

Therefore the answer is 12.
Sample Input 2:
2
4 3
1 2 6 4
4 2
7 8 9 10
Sample Output 2:
4
10
Full screen
Console