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

โปรแกรม C++ หาพหุคูณของ x ที่ใกล้ที่สุดกับ a^b


สมมติว่าเรามีค่าสามค่า a, b และ x เราต้องหาพหุคูณของ x หนึ่งตัวที่ใกล้ที่สุดกับ a^b สมมติตัวเลขคือ x = 4, a = 3, b = 3 ผลลัพธ์จะเป็น 28 เนื่องจากนี่คือค่าที่ใกล้ที่สุดกับ 3^3 = 27

แนวทางคือง่าย เราต้องทำตามเงื่อนไขเหล่านี้:

  • ถ้า b < 0 และ a = 1 แล้ว a^b จะกลายเป็น 1 และดังนั้น พหุคูณของ x ที่ใกล้ที่สุดจะกลายเป็น 0 หรือ x
  • ถ้า b < 0 และ a > 1 แล้ว a^b จะกลายเป็นน้อยกว่า 1 และดังนั้น พหุคูณของ x ที่ใกล้ที่สุดจะกลายเป็น 0
  • ถ้า b > 0 แล้วหา a^b ให้ mul = จำนวนเต็มของ a^b / x แล้วพหุคูณของ x ที่ใกล้ที่สุดคือ mul*x หรือ (mul + 1)*x

ตัวอย่างโค้ด C++

#include <iostream>
#include <cmath>
using namespace std;

void findMultiple(int a, int b, int x) {
    cout << "Nearest multiple: ";
    if (b < 0) {
        if (a == 1 && x == 1)
            cout << "1";
        else
            cout << "0";
    }
    int mul = pow(a, b);
    int ans = mul / x;
    int ans1 = x * ans;
    int ans2 = x * (ans + 1);
    if((mul - ans1) <= (ans2 - mul)){
        cout << ans1;
    }
    else{
        cout << ans2;
    }
}

int main() {
    int a = 3, b = 3, x = 4;
    findMultiple(a, b, x);
}

ผลลัพธ์

Nearest multiple: 28