ตรวจสอบว่าเลขสามารถเขียนในรูป 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