From cec7cdf42c2dcc7bd1db32afdb36aa4c4f4bf13a Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Mon, 18 Oct 2021 16:30:11 +0800 Subject: [PATCH] =?UTF-8?q?483:=E6=9C=80=E5=B0=8F=E5=A5=BD=E8=BF=9B?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leetcode/editor/cn/SmallestGoodBase.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/leetcode/editor/cn/SmallestGoodBase.java b/src/main/java/leetcode/editor/cn/SmallestGoodBase.java index 6d65027..ab2a54d 100644 --- a/src/main/java/leetcode/editor/cn/SmallestGoodBase.java +++ b/src/main/java/leetcode/editor/cn/SmallestGoodBase.java @@ -55,22 +55,19 @@ public class SmallestGoodBase { class Solution { public String smallestGoodBase(String n) { long num = Long.parseLong(n); - for (long i = 2; i < num; i++) { - if (isTrue(num, i)) { - return String.valueOf(i); + int mMax = (int) Math.floor(Math.log(num) / Math.log(2)); + for (int m = mMax; m > 1; m--) { + int k = (int) Math.pow(num, 1.0 / m); + long mul = 1, sum = 1; + for (int i = 0; i < m; i++) { + mul *= k; + sum += mul; + } + if (sum == num) { + return Integer.toString(k); } } - return n; - } - - private boolean isTrue(long num, long i) { - do { - if (num % i != 1) { - return false; - } - num /= i; - } while (num != 1); - return true; + return Long.toString(num - 1); } } //leetcode submit region end(Prohibit modification and deletion)