숫자 n이 있다고 가정합니다. ^b로 표현할 수 있는지 확인해야 합니다.
따라서 입력이 125와 같으면 출력은 125 =5^3이므로 True가 됩니다. 따라서 a =5 및 b =3
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- num이 1과 같으면 다음과 같습니다.
- 참을 반환
- i를 초기화하려면:=2, i * i <=num일 때 업데이트(i를 1만큼 증가), 수행:
- val :=log(num) / log(i)
- val - val의 정수 부분이 거의 0인 경우:
- 참을 반환
- 거짓 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
#include<iostream> #include<cmath> using namespace std; bool solve(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 << solve(n); }
입력
125
출력
1