30/09/2018, 23:42

HackerRank : Day 10

Ai có cách làm hay hơn thì chia sẻ nhé
À bỏ cái #include <math.h> đi nhé

http://pastebin.com/wy3iHCev

Nguyễn Xuân Phúc viết 01:51 ngày 01/10/2018

cần lắm một cái đề chủ @beo_sen ơi

Beo Sen viết 01:57 ngày 01/10/2018

Bakf trong hacker rank ngày 10 đó bạn

Nguyễn Xuân Phúc viết 01:51 ngày 01/10/2018

nói nhanh đề bài đi cho gọn bạn
chứ lười reg nó lắm, reg là phải làm hết

Beo Sen viết 01:44 ngày 01/10/2018

Chuyển từ interger qua bit và đếm xem cdayx các số 1 liền kề nhau nào lớn nhấT vàcos bn số

Nguyễn Xuân Phúc viết 01:50 ngày 01/10/2018

thật là đọc k hiểu đang ghi gì luôn ấy :’(

Beo Sen viết 01:44 ngày 01/10/2018

Chuyển từ interger qua nhị phân
Ví dụ nhé
số 155 --> 10011011

Như vậy rồi đếm xem số số 1 kề nhau lớn nhất là bao nhiêu
Ở đây là 2

Nguyễn Xuân Phúc viết 01:52 ngày 01/10/2018
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int mx = 0;
	int n, cnt = 0;
	
	cin >> n;
	while (n){
		if (n & 1)
			cnt++;
		else{
			mx = max(mx, cnt);
			cnt = 0;
		}
		n >>= 1;
	}
	mx = max(mx, cnt);
	cout << mx;
	
	return 0;
}

vậy thì thế này gọn hơn

Beo Sen viết 01:46 ngày 01/10/2018

ông chuyển sang binary đoạn nào thế @@
à cái của tôi bỏ cái thư viện math.h đi nhé,chỉ cần thư viện std + cái bitset thôi

Nguyễn Xuân Phúc viết 01:54 ngày 01/10/2018

không nhất thiết phải chuyển sang hệ nhị phân, vừa chuyển vừa tính luôn

Beo Sen viết 01:50 ngày 01/10/2018

Hay,vừa test thì đúng thế.để đọc code xem sao,thanks nhé

Beo Sen viết 01:56 ngày 01/10/2018

Cái mx = max(mx, cnt) là để so sánh 2 cái cái nào lớn hơn hả c?

Nguyễn Xuân Phúc viết 01:44 ngày 01/10/2018

hay thì phải like share subscribe chứ

Nguyễn Xuân Phúc viết 01:55 ngày 01/10/2018

n

return về max value của 2 tham số

Beo Sen viết 01:51 ngày 01/10/2018

n >>= 1 là gán giá trị 1 cho n hả ông :)))

Nguyễn Xuân Phúc viết 01:45 ngày 01/10/2018

n >>= 1 tương đương n = n >> 1
phép dịch bit, dịch sang phải 1 bit
tương đương n = n / 2

Beo Sen viết 01:48 ngày 01/10/2018

tui vẫn chưa hiểu ông chuyển sang nhị phân kiểu gì
Ông viết riêng cái code chuyển sang nhị phân tui xem đc ko

Nguyễn Xuân Phúc viết 01:42 ngày 01/10/2018

trong code này nếu nói “chuyển nhị phân” thì không hề có, nhưng bản thân cái biến n khi lưu xuống thì nó đã được biểu diễn ở dạng nhị phân rồi, chỉ đang đem nó ra xài thôi :))

Beo Sen viết 01:52 ngày 01/10/2018

Tức là khi ông sài n >>= 1 thì ví dụ
0 0 0 1 1 1 0 0 1 1
1 2 3 4 5 6 7 8 9 0

Thì nó ở vị trí thứ 1 chuyển sang vị trí thứ 2?

Nguyễn Xuân Phúc viết 01:57 ngày 01/10/2018

Giá trị của N trong các vòng lặp lần lượt sẽ là:
155 - 77 - 38 - 19 - 9 - 4 - 2 - 1 - 0
nếu để ý bit cuối của từng giá trị
ta sẽ thấy là
1 - 1 - 0 - 1 - 1 - 0 - 0 - 1
thì cái này có phải chính là biểu diễn ngược của 155 ở hệ nhị phân không :3

Beo Sen viết 01:51 ngày 01/10/2018

À ừ nhỉ :)))
Ơ mà nếu muốn đảo ngược thì đảo lại như nào nhỉ

Mà ông giải thích kĩ hơn (minh họa ) cho tui cái phép n >>=1 đc ko,chưa thấy bảo giờ + chưa hiểu chuyển dời bit là như nào

Bài liên quan
0