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

ตรวจสอบว่าเลขสามารถเขียนในรูป xʸ ได้หรือไม่ ใน C++


ตรวจสอบว่าเลขสามารถเขียนในรูป xʸ (x ยกกำลัง y) ได้หรือไม่

ตัวอย่าง: 125 = 5³, 91 = ไม่ได้

อัลกอริทึม: วน i = 2 ถึง √num คำนวณ val = log(num)/log(i) ถ้า val ใกล้ค่าจำนวนเต็ม → เป็นได้

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

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

bool isRepresentPower(int num) {
    if (num == 1) return true;
    for (int i = 2; i * i <= num; i++) {
        double val = log(num) / log(i);
        if ((val - (int)val) < 0.00000001) return true;
    }
    return false;
}

int main() {
    int n = 125;
    cout << (isRepresentPower(n) ? "Can be represented" : "Cannot be represented");
}

ผลลัพธ์

Can be represented