Bài này dùng các toán tử xor, or ( & ^ ..) đã từng được thảo luận 1 lần, check dưới nick của lão Huynguyen sẽ tìm ra ngay. Lâu quá rùi nên tui cũng chẳng còn nhớ gì T_T!
Đề bài:
Nhập vào hai số a,b tính tích, thương, lấy dư của 2 số đó mà không được dùng các phép *,/,% chỉ được dùng phép cộng và trừ.
Mình suy nghĩ bài này mấy hôm rồi mà vẫn bế tắc, các bạn hướng dẫn dùm mình thuật toán để giải bài này với.
Luôn học hỏi là cách để tự hoàn thiện bản thân.
Bài này dùng các toán tử xor, or ( & ^ ..) đã từng được thảo luận 1 lần, check dưới nick của lão Huynguyen sẽ tìm ra ngay. Lâu quá rùi nên tui cũng chẳng còn nhớ gì T_T!
Mình cũng có thể làm thủ công bằng các vòng lặp.
+ Với toán nhân. thì kq = a*b. thì ta sẽ lặp a lần. mỗi lần cho kq += b.
bạn này cũng có thể làm giảm số lần lặp bằng cách tìm thằng bé nhất trong a , b để làm số lần lặp
+ Với toán chia. ta có nhận xét. ta thấy 18/6 = 3. bằng số lần 18 trừ cho 6 để có kết quả là 0. 18 - ( 6+6+6) = 18 -6 -6 -6 =0.C++ Code:
int kq = 0; for (int i=0; i<a; i++) { kq += b; }
18/5 = 3. dư 3. tức là : 18 - ( 5+5+5) = 18 -5-5-5 = 3 <5.
Như vậy ta sẽ làm vòng lặp và lấy số bị chia trừ cho số chia cho đến khi kết quả thu được nhỏ hơn số chia hay bẳng 0. Khi đó số lần lặp sẽ là kết quả của phép chia ( phần nguyên) còn kết quả còn lại sau khi trừ sẽ là phần dư.
C++ Code:
Đã được chỉnh sửa lần cuối bởi thanhluan07 : 30-03-2008 lúc 10:55 PM.
chieuquan đã nói rồi, nakaru cứ học vòng lặp đi rồi suy nghĩ làm bài, chứ vòng lặp chưa xem mà đã lên đây hỏi sớm thế. Mấy bài đó cũng đơn giản thôi, lên đây nhờ mấy cao thủ nói huỵch toẹt ra hết thì còn gì hay hehe