[Algorithms] Nhân một số với 7 không dùng %, /, *
1.Đề bài Viết function nhân một số với 7không dùng các toán tử%, /, * Xin chào các bạn trở lại với series HARD MODE của mình, trong series này mình sẽ giới thiệu với các bạn các cách khó hơn, nhưng đầy thú vị để giải quyết những vấn đề cơ bản trong lập trình. Như bài trước của mình, hay cũng ...
1.Đề bài
Viết function nhân một số với 7không dùng các toán tử%, /, *
Xin chào các bạn trở lại với series HARD MODE của mình, trong series này mình sẽ giới thiệu với các bạn các cách khó hơn, nhưng đầy thú vị để giải quyết những vấn đề cơ bản trong lập trình.
Như bài trước của mình, hay cũng như bài này: Viết function nhân một số với7 không dùng các toán tử %, /, * , thông thường bạn chỉ cần làm x = x * 7 là giải quyết xong vấn đề, nhưng trong series này mình sẽ giải quyết các vấn đề đó không bằng cách thông thường nhưng sẽ vô cùng thú vị.
Lan man thế đủ rồi, quay lại với đề bài nào!
2.Giải quyết
Ta nhận thấy rằng 7 * x = 8 * x - x
Nhưng làm sao để tính toán biểu thức trên mà không bằng các phép / * %
Câu trả lời là chúng ta sẽ dùng phép toán <<
8 * x == x << 3
OK. ta viết function như sau:
#include "stdio.h" int multiply(int x){ return (x<<3) - x; } int main(){ int x = 3; printf("%d ", multiply(x)); // 21 }
3.Kết luận
Thanks for reading... Credit: http://stackoverflow.com/questions/7991341/multiply-by-7-in-efficient-way