Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最小のグッドベース


整数nがあるとすると、n基数kのすべての桁が1の場合、k> =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()というメソッドを定義します。これにはnと長さが必要です-
  • 低:=1、高:=n
  • 高い間>=低い-
    • 中:=低+(高–低)/ 2
    • mainSum:=getSum(mid、length)
    • mainSum =nの場合、midを返します
    • それ以外の場合、mainSum> nの場合、high:=mid – 1
    • それ以外の場合は低:=中+ 1
  • 戻り値-1
  • メインの方法から次のようにします-
  • n:=指定された数
  • 64から0までの範囲のiの場合
    • x:=check(n、i)
    • x> =2の場合、xを文字列として返します
  • 文字列としてn–1を返します

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def getSum(self, x, length):
      mainSum = 0
      temp = 1
      for i in range(length):
         mainSum += temp
         temp *= x
      return mainSum
   def check(self, n, length):
      low = 1
      high = n
      while high >= low:
      mid = low + (high - low) // 2
      mainSum = self.getSum(mid, length)
      if mainSum == n:
         return mid
      elif mainSum > n:
         high = mid - 1
      else:
         low = mid + 1
      return -1
   def smallestGoodBase(self, n):
      n = int(n)
      for i in range(64, 0, - 1):
         x = self.check(n, i)
      if x >= 2:
         return str(x)
      return str(n - 1)
ob = Solution()
print(ob.smallestGoodBase("121"))

入力

“121”

出力

3

  1. PythonのBSTでK番目に小さい要素

    二分探索木があるとします。そのBSTでK番目に小さい要素を見つける必要があります。したがって、ツリーが次のような場合- したがって、3番目に小さい要素を見つけたい場合、k =3であり、結果は7になります。 これを解決するには、次の手順に従います- ノードと呼ばれる空のリストを1つ作成します solve(root、nodes)を呼び出す return k –ノードの1番目の要素 solveメソッドが作成されます。これはルートとノードの配列を取得します。これは次のように機能します- rootがnullの場合は、戻ります solve(ルートの左側、ノード) ルートの値をノード配列に追

  2. 2D配列でk番目に小さい要素を見つけるPythonプログラム

    1つのn×nユーザー入力整数行列が与えられ、kの値。私たちのタスクは、2D配列でk番目に小さい要素を見つけることです。ここでは、Pythonでheapq mudule.Heapキュー(またはheapq)を使用します。 Pythonでは、「heapq」モジュールを使用して利用できます。 Pythonでのこのモジュールの手法は、最小のヒープ要素がポップされるたびに(min heap).nsmallest()メソッドを使用して、データフレームまたはシリーズからn個の最小値を取得します。 例 Input Array is:: 10 20 20 40 15 45 40 30 32 33 30 50