AD1

Friday, 14 July 2017

Maximum AND

Problem
https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-manipulation/practice-problems/algorithm/maximum-and/

Solution

#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv) {
int T;
long int A,B;
long int max=0;
cin>>T;
for(int i=0;i<T;i++)//input test cases
{
cin>>A>>B;//input A,B
for(int j=A;j<B;j++)// loop all pairs between A,B
{
for(int k=j+1;k<=B;k++)
{
if((k&j)>max){max=(k&j);}
}
}
cout<<max<<endl;
max=0;//reset max for next test case
}
return 0;
}
view raw maxand.cpp hosted with ❤ by GitHub

Wednesday, 12 July 2017

Toggle bits given range

Problem 
http://practice.geeksforgeeks.org/problems/toggle-bits-given-range/0

Solution

#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv) {
int t;
int N,L,R;
cin>>t;// test cases
for(int i=0;i<t;i++)
{
cin>>N>>L>>R;
for(int i=L-1;i<R;i++)
{
N^=1<<i;
}
cout<<N<<endl;
}
return 0;
}
view raw gr.cpp hosted with ❤ by GitHub


Tuesday, 11 July 2017

Monk and his Friend

Problem 

https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-manipulation/practice-problems/algorithm/monk-and-his-friend/

Solution

#include <iostream>
#include <cstdlib>
#include <string>
#include <math.h>
using namespace std;
int main(int argc, char** argv) {
long int N,P;
long int XOR;
int counter=0;
int t;
cin>>t;// test cases
for(int i=0;i<t;i++)
{
cin>>N>>P;
XOR=N^P;
for(int i=0;i<=31;i++)
{
if(XOR&(1<<i)){counter++;}
}
cout<<counter<<endl;
counter=0;
}
return 0;
}
view raw x.cpp hosted with ❤ by GitHub

Saturday, 8 July 2017

Monk and the box of cookies

Problem

https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-manipulation/practice-problems/algorithm/monk-and-the-box-of-cookies/

Solution

#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv) {
int t,N,b;
int p=0;
cin>>t;
int record[32];//record for every position
for(int i=0;i<t;i++)
{
for(int x=0;x<31;x++){record[x]=0;}//intialize records
cin>>N;
for(int j=0;j<N;j++)
{
cin>>b;
for(int k=0;k<31;k++)
{
if(b&(1<<k)){record[k]++;}//if position k has set bit , increment its record
}
}
int max=record[0];
for(int x=0;x<31;x++)
{
if(max<record[x]){max=record[x];p=x;}//find most occurring position has set bit
}
cout<<p<<endl;
}
return 0;
}
view raw monk.cpp hosted with ❤ by GitHub

Friday, 7 July 2017

The Great Kian

Problem
https://www.hackerearth.com/practice/basic-programming/implementation/basics-of-implementation/practice-problems/algorithm/the-great-kian/

Solution
#include <iostream>
#include <cstdlib>
#include <string>
#include <math.h>
using namespace std;
int main(int argc, char** argv) {
long long int n;
cin>>n;
long long int a[n];
long long int s1=0;
long long int s2=0;
long long int s3=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int j=0;j<n;j+=3)
{
s1+=a[j];
}
cout<<s1<<" ";
for(int j=1;j<n;j+=3)
{
s2+=a[j];
}
cout<<s2<<" ";
for(int j=2;j<n;j+=3)
{
s3+=a[j];
}
cout<<s3;
return 0;
}
view raw gk.cpp hosted with ❤ by GitHub



Little Jhool and psychic powers

Problem

https://www.hackerearth.com/practice/basic-programming/implementation/basics-of-implementation/practice-problems/algorithm/psychic-powers/

Solution


#include <iostream>
#include <cstdlib>
#include <string>
#include <math.h>
using namespace std;
int main(int argc, char** argv) {
string s;
cin>>s;
int i=0;
int sum=0;
int flag=0;
while(s[i]!='\0')// loop all elements
{
for(int j=i;j<=i+5;j++)// check every 6 consecutive numbers
{
sum+=s[j];
}
if(sum==288||sum==294)// if you found 6 consecutive ones or zeros (sum is ascii , because input is string)
{
flag=1;break;
}
i++;// move to next element
sum=0;//reset sum
}
if(flag){cout<<"Sorry, sorry!"<<endl;}
else if(flag==0){cout<<"Good luck!";}
return 0;
}

Count Digits

Problem 

https://www.hackerearth.com/practice/basic-programming/implementation/basics-of-implementation/practice-problems/algorithm/count-digits-1/

Solution

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int main(int argc, char** argv) {
string s;
cin>>s;
int i=0;
int c[10]={0,0,0,0,0,0,0,0,0};
while(s[i]!='\0')
{
switch(s[i])
{
case 48:c[0]++;i++;break;
case 49:c[1]++;i++;break;
case 50:c[2]++;i++;break;
case 51:c[3]++;i++;break;
case 52:c[4]++;i++;break;
case 53:c[5]++;i++;break;
case 54:c[6]++;i++;break;
case 55:c[7]++;i++;break;
case 56:c[8]++;i++;break;
case 57:c[9]++;i++;break;
}
}
// print count of each digit
for(int j=0;j<=9;j++)
{
cout<<j<<" "<<c[j]<<endl;
} return 0;
}
view raw c.cpp hosted with ❤ by GitHub