Added sets bit manupulation and number system

pull/712/head
Nokhalal Mahato 2022-03-09 12:35:43 +05:30
parent 75e0a5dc3c
commit aa74bdbd10
18 changed files with 445 additions and 0 deletions

View File

@ -0,0 +1,2 @@
.vscode/
*.exe

View File

@ -0,0 +1,20 @@
#include<bits/stdc++.h>
using namespace std;
int unique(int a[],int n){
int num=0;
for(int i=0;i<n;i++){
num=a[i]^num;
}
return num;
}
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<unique(a,n);
}

View File

@ -0,0 +1,35 @@
#include<bits/stdc++.h>
using namespace std;
int unique2(int a[],int n){
int num=0;
for(int i=0;i<n;i++)
num=num^a[i];
return num;
}
int getbit(int n,int num){
return (n&(1<<num));
}
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int num=unique2(a,n);
int c=0;
while(c<num){
if(num&(1<<c))
break;
c++;
}
int n1=0;
for(int i=0;i<n;i++){
if(getbit(a[i],c))
n1=n1^a[i];
}
cout<<n1<<" "<<(n1^num);
}

View File

@ -0,0 +1,22 @@
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
int sum=0,num=0;
for(int i=0;i<64;i++){
sum=0;
for(int j=0;j<n;j++){
if(a[j]&(1<<i))
sum++;
}
if(sum%3 !=0)
num=(num|(1<<i));
}
cout<<num;
}

View File

@ -0,0 +1,26 @@
#include<bits/stdc++.h>
using namespace std;
int setbit(int n,int pos){
return (n|(1<<pos));
}
int getbit(int n,int pos){
return (( n &(1<<pos) )!=0);
}
int removebit(int n,int pos){
return (n &(~(1<<pos)));
}
int updatebit(int n,int pos,int val){
int a=n & (~(1<<pos));
return (a|(val<<pos));
}
int main(){
int n,p,v;
cin>>n>>p;
cout<<getbit(n,p)<<endl;
cout<<setbit(n,p)<<endl;
cout<<removebit(n,p)<<endl;
cin>>v;
cout<<updatebit(n,p,v)<<endl;
}

View File

@ -0,0 +1,17 @@
#include<bits/stdc++.h>
using namespace std;
int countones(int n){
int count=0;
while(n>0){
n=(n&(n-1));
count++;
}
return count;
}
int main(){
int n;
cin>>n;
cout<<countones(n);
}

View File

@ -0,0 +1,13 @@
#include<bits/stdc++.h>
using namespace std;
int check2power(int n){
return ((n & (n-1))==0);
}
int main(){
int n;
cin>>n;
cout<<check2power(n);
}

View File

@ -0,0 +1,18 @@
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<(1<<n);i++){
for(int j=0;j<n;j++){
if(i&(1<<j))
cout<<a[j]<<" ";
}
cout<<endl;
}
}

View File

@ -0,0 +1,85 @@
#include<bits/stdc++.h>
using namespace std;
int reverse(int n){
int ans=0,d;
while(n>0){
d=n%10;
ans=ans*10 + d;
n=n/10;
}
return ans;
}
int binary_addition(int a,int b){
int add=0,carry=0;
while(a>0 && b>0){
if(a%2==1 && b%2==1){
add=add*10 + carry;
carry=1;
}
else if((a%2==1 && b%2==0) || (a%2==0 && b%2==1)){
if(carry==1){
add=add*10 + 0;
carry=1;
}
else{
add=add*10 + 1;
carry=0;
}
}
else{
add = add*10 + carry;
carry=0;
}
a=a/10;
b=b/10;
}
while(a>0){
if(a%2==1){
if(carry==1){
carry=1;
add=add*10+0;
}
else{
carry=0;
add=add*10 + 1;
}
}
else{
add=add*10 +carry;
carry=0;
}
a=a/10;
}
while(b>0){
if(b%2==1){
if(carry==1){
carry=1;
add=add*10+0;
}
else{
carry=0;
add=add*10 + 1;
}
}
else{
add=add*10 +carry;
carry=0;
}
b=b/10;
}
if(carry==1){
add=add*10 +1;
}
add=reverse(add);
return add;
}
int main(){
int a,b;
cin>>a>>b;
int add=binary_addition(a,b);
cout<<add;
}

View File

@ -0,0 +1,18 @@
#include<bits/stdc++.h>
using namespace std;
int binarytodecimal(int n){
int two=1,r,num=0;
while(n>0){
r=n%10;
num=num + two*r;
two*=2;
n/=10;
}
return num;
}
int main(){
int n;
cin>>n;
int decimal=binarytodecimal(n);
cout<<decimal;
}

View File

@ -0,0 +1,24 @@
#include<bits/stdc++.h>
using namespace std;
int decimaltobinary(int n){
int max=1;
while(max<=n){
max=max*2;
}
max/=2;
int num=0;
while(max>=1){
num=num*10 + n/max;
n-=max*(n/max);
max=max/2;
}
return num;
}
int main(){
int n;
cin>>n;
int binary=decimaltobinary(n);
cout<<binary;
}

View File

@ -0,0 +1,29 @@
#include<bits/stdc++.h>
using namespace std;
string decimal_to_hexa(int n){
int multipler=1;
while(multipler<=n)
multipler*=16;
multipler/=16;
string num="";
int d;
while(multipler>=1){
d=n/multipler;
if(d>9){
char c='A'+(d-10);
num= num + c;
}
else
num=num + to_string(d);
n=n-(d*multipler);
multipler/=16;
}
return num;
}
int main(){
int n;
cin>>n;
string hexa=decimal_to_hexa(n);
cout<<hexa;
}

View File

@ -0,0 +1,24 @@
#include<bits/stdc++.h>
using namespace std;
int decimal_to_octal(int n){
int multiplier=1;
while(multiplier<=n){
multiplier*=8;
}
multiplier/=8;
int num=0;
while(multiplier>=1){
num=num*10 + n/multiplier;
n=n - multiplier*(n/multiplier);
multiplier/=8;
}
return num;
}
int main(){
int n;
cin>>n;
int octal=decimal_to_octal(n);
cout<<octal;
}

View File

@ -0,0 +1,24 @@
#include<bits/stdc++.h>
using namespace std;
int hexa_to_decimal(string n){
int l=n.size();
l=l-1;
int ans=0,x=1;
while(l>=0){
if(n[l]>='0' && n[l]<='9')
ans+=(n[l]-'0')*x;
else
ans+=x*(n[l]-'A'+10);
x*=16;
l--;
}
return ans;
}
int main(){
string s;
cin>>s;
int decimal=hexa_to_decimal(s);
cout<<decimal;
}

View File

@ -0,0 +1,20 @@
#include<bits/stdc++.h>
using namespace std;
int octal_to_decimal(int n){
int num=0,r,multiplier=1;
while(n>0){
r=n%10;
num=num + (r*multiplier);
n=n/10;
multiplier=multiplier*8;
}
return num;
}
int main(){
int n;
cin>>n;
int decimal=octal_to_decimal(n);
cout<<decimal;
}

View File

@ -0,0 +1,24 @@
#include<bits/stdc++.h>
using namespace std;
int main(){
multiset<int> ms;
ms.insert(1);
ms.insert(1);
ms.insert(1);
ms.insert(2);
ms.insert(3);
ms.insert(5);
for(auto el:ms)
cout<<el;
cout<<endl;
ms.erase(ms.find(1));
for(auto el:ms)
cout<<el;
cout<<endl;
ms.erase(5);
ms.erase(1);
for(auto el:ms)
cout<<el;
cout<<endl;
}

View File

@ -0,0 +1,31 @@
#include<bits/stdc++.h>
using namespace std;
int main(){
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(2);
for(auto el:s)
cout<<el;
cout<<endl;
for(auto el=s.begin();el!=s.end();el++)
cout<<*el;
cout<<endl;
for(auto el=s.rbegin();el!=s.rend();el++)
cout<<*el;
cout<<endl;
set<int,greater<int>> s1;
s1.insert(1);
s1.insert(2);
s1.insert(3);
s1.insert(4);
s1.insert(2);
for(auto el:s1)
cout<<el;
cout<<endl;
}

View File

@ -0,0 +1,13 @@
#include<bits/stdc++.h>
using namespace std;
int main(){
unordered_set<int> us;
us.insert(2);
us.insert(1);
us.insert(4);
us.insert(5);
for(auto el:us)
cout<<el;
cout<<endl;
}