BITS - Số bít khác nhau
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 128 megabyte
Đăng bởi: NTUcoder
Cho hai số nguyên a và b. Tính số bít khác nhau của a và b nếu biểu diễn dưới dạng nhị phân.
Giả sử a = 21, b = 78.
a[2] = 0010101
b[2] = 1001110
Vậy a và b khác nhau 5 bít.
Dữ liệu vào:
- Là hai số nguyên a, b cách nhau 1 khoảng trắng ( 0 ≤ a, b ≤ 109)
Dữ liệu xuất
- Số bít khác nhau giữa a và b
Ví dụ
- input21 78output5
- Solution :
- #include<iostream>#include<string.h>#include<bits/stdc++.h>using namespace std;void swap(int *a,int *b){int temp = *a;*a = *b;*b = temp;}int kq (int a[],int n,int &lenA){int k = 0;while(n>0){a[k++] = n%2;n /= 2;}for(int i = 0;i<k/2;i++){swap(&a[i],&a[k-i-1]);}lenA = k;return lenA;}void add (int a[],int &len){len++;for(int i = len;i>0;i--){a[i] = a[i-1];}a[0]=0;}int main (){int n,m,a[105],b[105],lenA = 0,lenB = 0;cin >> n >> m;lenA = kq(a,n,lenA);lenB = kq(b,m,lenB);while(lenA != lenB){if(lenA>lenB){add(b,lenB);}else add(a,lenA);}int dem = 0;for(int i = 0;i<lenA;i++){if(a[i] != b[i]) dem++;}cout << dem;}
Nhận xét
Đăng nhận xét