LetCode 326 Power of Three(3의 멱)(반복, Log 함수)
번역하다
, 3 ( ……
:
。
원문
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
분석하다.
제목의 뜻을 나는 사실 충분히 이해하지 못한다. 예를 들면 12는 도대체 될 수 있을까?아니면 3, 9, 27, 81 이런 거밖에 안 돼요?우선 간단한 귀환을 써 봅시다.
bool isPowerOfThree(int n) {
if (n == 1) return true;
else if (n == 0) return false;
else if (n % 3 == 0)
return isPowerOfThree(n / 3);
else return false;
}
제출에 성공했습니다. 그러면 스스로 12를 매개 변수로 해 보았는데false로 되돌아온 것을 발견했습니다. 그러면 제목의 뜻은 위에서 말한 두 번째라고 단정할 수 있습니다.
로그 함수 기억하시나요? 전에 한 문제 만났었는데 이번에 딱 생각났어요...
logn3
12로 계산하면
log123=2.26186
int(log123)=2
log123−int(log123)=0.26186
그래서 결과가 0인지 아닌지 직접 판단했으면 좋겠는데...
bool isPowerOfThree(int n) {
double logAns= log(n) / log(3);
return (logAns- int(logAns) == 0) ? true : false;
}
그러나 이 코드를 제출한 후에도 여전히 오류가 있는 것을 발견했다. 243은 위의 코드에서false였다. 끊어진 부분을 보면 정밀도 문제 때문에 계속 고쳐야 한다.
logn3=logn10log310
그래서 코드가 나왔는데...
코드
class Solution {
public:
bool isPowerOfThree(int n) {
double logAns = log10(n) / log10(3);
return (logAns - int(logAns) == 0) ? true : false;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.