Problem
JJ has three integers , , and . He can apply the following operation on :
- Select an integer such that and set . (Here, denotes the bitwise XOR operation.)
JJ wants to make equal to .
Determine the minimum number of operations required to do so. Print if it is not possible.
Input Format
- The first line contains a single integer — the number of test cases. Then the test cases follow.
- The first and only line of each test case contains three integers , , and — the parameters mentioned in the statement.
Output Format
For each test case, output the minimum number of operations required to make equal to . Output if it is not possible to do so.
Constraints
Subtasks
- Subtask 1 (30 points): is a power of .
- Subtask 2 (70 points): Original Constraints.
Sample 1:
Input
Output
3 5 5 2 3 7 8 8 11 1
0 1 -1
Explanation:
- Test Case : is already equal to . Hence we do not need to perform any operation.
- Test Case : We can perform the operation with which is . Therefore . Thus, only one operation is required.
- Test Case : We can show that it is not possible to make equal to .
Sample 2:
Input
Output
2 24 27 3 4 5 1000
2 1
Explanation:
Note that the above sample case belongs to subtask .
- Test Case 1: We can first perform the operation with which is . Therefore . Then we can perform the operation with which is . Therefore . Therefore we can make equal to in operations. It can be shown that it is not possible to do this in less than operations.
Code(C++):-
#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
int t;
cin>>t;
while(t--){
int a,b,c;
cin>>a>>b>>c;
int n=c;
int ans=a^b;
if(a==b){
cout<<0<<endl;
continue;
}
bool f=true;
int cnt=1;
int hlp=0;
int maxi=0;
for(int i=0;i<32;i++){
if(ans&(1<<i)){
maxi=pow(2,i);
}
}
if(maxi>=n){
cout<<-1<<endl;
continue;
}
for(int i=31;i>=0;i--){
if(ans&(1<<i)){
hlp=hlp|(1<<i);
}
if(hlp>=n){
hlp=0;
cnt++;
hlp=hlp|(1<<i);
}
}
cout<<cnt<<endl;
}
return 0;
}
Code(JAVA):-
import java.util.*;
import javax.lang.model.util.ElementScanner14;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef {
public static int gcf(int a, int b) {
if (b == 0)
return a;
return gcf(b, a % b);
}
public static int lcm(int a, int b) {
return (a * b) / gcf(a, b);
}
public static int highestsetbit(long n)
{
int count=0;
while(n>0)
{
count++;
n=n>>1;
}
return count;
}
public static void main(String[] args) throws java.lang.Exception {
// your code goes here
Scanner input = new Scanner(System.in);
int test = input.nextInt();
while (test > 0) {
long a=input.nextLong();
long b=input.nextLong();
long n=input.nextLong();
long c=a^b;
int x=highestsetbit(c);
int y=highestsetbit(n);
long temp=(long)Math.pow(2,x-1);
if(c==0)
System.out.println(0);
else if(c<n)
System.out.println(1);
else if(temp>=n)
{
System.out.println(-1);
}
else if(n<=c)
{
System.out.println(2);
}
test--;
}
}
}
Recommended Post :-
HCL Coding Questions:-
Capgemini Coding Questions:-
iMocha coding Questions:-
Tech Mahindra coding questions:-
Unthinkable Solutions coding questions:-
- Swap the adjacent characters of the string
- Double the vowel characters in the string
- Character with their frequency
- Program to find the closest value
Must check this:-
Companies interview:-
- Swap adjacent characters
- Double the vowel characters
- Check valid parenthesis
- Print the characters with their frequencies
- Find closest value
- Word Count
- Program of CaesarCipher
- Program to find the perfect city
- Annual Day | Tech Mahindra coding question
- Find the number of pairs in the array whose sum is equal to a given target.
Full C course:-
Key points:-
- How to set limit in the floating value in python
- What is boolean data type
- How to print any character without using format specifier
- How to check that given number is power of 2 or not
- How to fix limit in double and floating numbers after dot (.) in c++
- How to print a double or floating point number in scientific notation and fixed notation
- How to take input a string in c
- How to reduce the execution time of program in c++.
Cracking the coding interview:-
Array and string:-
Tree and graph:-
Hackerearth Problems:-
- Very Cool numbers | Hacker earth solution
- Vowel Recognition | Hackerearth practice problem solution
- Birthday party | Hacker earth solution
- Most frequent | hacker earth problem solution
- program to find symetric difference of two sets
- cost of balloons | Hacker earth problem solution
- Chacha o chacha | hacker earth problem solution
- jadu and dna | hacker earth solution
- Bricks game | hacker earth problem
- Anti-Palindrome strings | hacker earth solution
- connected components in the graph | hacker earth data structure
- odd one out || hacker earth problem solution
- Minimum addition | Hackerearth Practice problem
- The magical mountain | Hackerearth Practice problem
- The first overtake | Hackerearth Practice problem
Hackerrank Problems:-
- Playing With Characters | Hackerrank practice problem solution
- Sum and Difference of Two Numbers | hackerrank practice problem solution
- Functions in C | hackerrank practice problem solution
- Pointers in C | hackerrank practice problem solution
- Conditional Statements in C | Hackerrank practice problem solution
- For Loop in C | hackerrank practice problem solution
- Sum of Digits of a Five Digit Number | hackerrank practice problem solution
- 1D Arrays in C | hackerrank practice problem solution
- Array Reversal | hackerrank practice problem solution
- Printing Tokens | hackerrank practice problem solution
- Digit Frequency | hackerrank practice problem solution
- Calculate the Nth term | hackerrank practice problem solution
Data structure:-
- Program to find cycle in the graph
- Implementation of singly link list
- Implementation of queue by using link list
- Algorithm of quick sort
- stack by using link list
- program to find preorder post order and inorder of the binary search tree
- Minimum weight of spanning tree
- Preorder, inorder and post order traversal of the tree
MCQs:-
0 Comments