JavaScriptで最小の適切なベースを見つける
グッドベース
整数のnumの場合、numの基数kのすべての桁が1であれば、k(k> =2)をnumの適切な基数と呼びます。
例:13基数3は111であるため、3はnum=13の適切な基数です
問題
唯一の引数として数値を表す文字列strを受け取るJavaScript関数を作成する必要があります。この関数は、strの適切なベースとなる可能な限り最小の数値の文字列表現を返す必要があります。
たとえば、関数への入力が-
の場合const str = "4681";
その場合、出力は-
になります。const output = "8";
出力の説明:
4681ベース8は11111であるため
例
このためのコードは-
になりますconst str = "4681";
const smallestGoodBase = (n = '1') => {
const N = BigInt(n), bigint2 = BigInt(2), bigint1 = BigInt(1), bigint0 = BigInt(0)
let maxLen = countLength(N, bigint2) // result at most maxLen 1s
const findInHalf = (length, smaller = bigint2, bigger = N) => {
if (smaller > bigger){
return [false];
};
if (smaller == bigger) {
return [valueOf1s(smaller, length) == N, smaller]
};
let mid = (smaller + bigger) / bigint2;
let val = valueOf1s(mid, length);
if(val == N){
return [true, mid];
};
if (val > N){
return findInHalf(length, smaller, mid - bigint1);
};
return findInHalf(length, mid + bigint1, bigger);
};
for (let length = maxLen; length > 0; length--) {
let [found, base] = findInHalf(length);
if(found){
return '' + base;
}
};
return '' + (N - 1);
function valueOf1s(base, lengthOf1s) {
let t = bigint1
for (let i = 1; i < lengthOf1s; i++) {
t *= base
t += bigint1
}
return t
}
function countLength(N, base) {
let t = N, len = 0
while (t > bigint0) {
t /= base
len++
}
return len
}
};
console.log(smallestGoodBase(str)); 出力
そして、コンソールの出力は-
になります8
-
JavaScriptの配列に存在しない最小の正の整数を見つける
最初で唯一の引数として整数の配列を受け取るJavaScript関数を作成する必要があります。 この関数は、配列に存在しない最小の正の整数を見つけて返す必要があります。 例- 入力配列が-の場合 const arr = [4, 2, -1, 0, 3, 9, 1, -5]; その場合、出力は-になります。 const output = 5; 1、2、3、4はすでに配列に存在し、5は配列に存在しない最小の正の整数であるためです。 例 以下はコードです- const arr = [4, 2, -1, 0, 3, 9, 1, -5]; const findSmallestMissing =
-
Pythonで最小のグッドベース
=2をnの基数と呼びます。したがって、数値nが文字列として指定された場合、nの最小の基数を次のように返す必要があります。ストリング。したがって、数値が121の場合、基数3の121は11111であるため、答えは3になります。 これを解決するには、次の手順に従います- getSum()というメソッドを定義します。これにはxと長さが必要です mainSum:=0およびtemp:=1を設定します 0から長さ– 1 −の範囲のiの場合 mainSum:=mainSum + temp、temp:=temp * x mainSumを返す check()というメソッドを定義します。これには