ในปัญหานี้ เราได้รับตัวเลข 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