[Algorithms] Nhân một số với 7 không dùng %, /, *
Bài đăng này đã không được cập nhật trong 7 năm
1.Đề bài
Viết function nhân một số với 7
khô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\n", multiply(x)); // 21
}
3.Kết luận
Thanks for reading... Credit: http://stackoverflow.com/questions/7991341/multiply-by-7-in-efficient-way
All rights reserved