ในปัญหานี้ เราได้รับตัวเลข A และ B สองตัว หน้าที่ของเราคือสร้างโปรแกรมเพื่อคำนวณ ค่าเฉลี่ยเร็วของตัวเลขสองตัวโดยไม่หาร
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: A =34 B =54
ผลลัพธ์: 44
แนวทางแก้ไข:
โดยปกติ ค่าเฉลี่ยจะคำนวณโดยการบวกตัวเลขสองตัวแล้วหารด้วย 2 ซึ่งต้องมีการหาร แต่เราต้องหาค่าเฉลี่ยโดยไม่ใช้การหาร ซึ่งสามารถทำได้โดยใช้ตัวดำเนินการ shift ขวา>> และเปลี่ยนการขยายไบนารีแทนการใช้ตัวดำเนินการหาร
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <iostream> #include <stdio.h> using namespace std; int calcAvgWODiv(int A, int B) { int average = (A + B) >> 1; return average; } int main() { int A = 123 , B = 653; cout<<"The average of the number is "<<calcAvgWODiv(A, B); return 0; }
ผลลัพธ์ -
The average of the number is 388