Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่าเฉลี่ยอย่างรวดเร็วของตัวเลขสองตัวโดยไม่มีการหารในภาษา C++


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