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

Pythonですべての桁が奇数であるnの最も近い数を見つけるプログラム


数値nがあるとすると、すべての桁が奇数である次の最も近い値を見つける必要があります。 nに最も近い値が2つある場合は、大きい方の値を返します。

したがって、入力がn =243の場合、出力は199になります。

これを解決するには、次の手順に従います-

  • first_even:=-1
  • s:=n as string
  • l:=sのサイズ
  • 0からlの範囲のiについては、
    • s [i]が偶数の場合、
      • first_even:=i
      • ループから抜け出す
  • first_evenが-1と同じ場合、
    • return n
  • big:=1 +s[インデックス0からiまで]の数値
  • s[i]が"0"と同じ場合、
    • s[i-1]が"1"と同じ場合、
      • small:=s[インデックス0からiまで]-1の数値
    • それ以外の場合、
      • small:=s[インデックス0からiまで]-11の数値
  • それ以外の場合、
    • small:=s[インデックス0からiまで]-1の数値
  • i + 1からlの範囲のiについては、
    • big:=big concatenate "1"
    • small:=small concatenate "9"
  • big:=bigの数値、small:=smallの数値
  • d2:=大きい-n、d1:=n-小さい
  • d1
  • 小さく返す
  • それ以外の場合、d1> =d2の場合、
    • 大きく返す
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, n):
          first_even = -1
          s = str(n)
          l = len(s)
          for i in range(l):
             if int(s[i]) % 2 == 0:
                first_even = i
                break
          if first_even == -1:
             return n
          big = str(int(s[: i + 1]) + 1)
          if s[i] == "0":
             if s[i - 1] == "1":
                small = str(int(s[: i + 1]) - 1)
             else:
                small = str(int(s[i : i + 1]) - 11)
          else:
             small = str(int(s[: i + 1]) - 1)
    
          for i in range(i + 1, l):
             big += "1"
             small += "9"
    
          big, small = int(big), int(small)
          d2 = big - n
          d1 = n - small
          if d1 < d2:
             return small
          elif d1 >= d2:
             return big
         
    ob = Solution()
    n = 243
    print(ob.solve(n))

    入力

    243

    出力

    199

    1. Pythonですべての木を燃やすのにかかる日数を見つけるためのプログラム

      3つのタイプのセルがあるフォレストを表す2Dマトリックスがあるとします。0空のセル1ツリーセル2火のセルのツリー毎日、隣接するセル(上、下、左、右、対角線)木が燃えています。すべての木が燃えるのにかかる日数を見つけなければなりません。それが不可能な場合は-1を返します。 したがって、入力が次のような場合 1 2 1 1 0 1 1 1 1 その場合、出力は4になります これを解決するには、次の手順に従います- ans:=0 twos:=新しいリスト 行列の行数が0から行数の範囲のiについては、 0か

    2. 数の奇数因子の合計を見つけるためのPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の奇数因子の合計を見つけることです。 ここでは、最初にすべての偶数の要因を排除する必要があります。 すべての偶数因子を削除するために、nを2で割り切れるまで繰り返し除算します。このステップの後、数の奇数因子のみを取得します。 以下は実装です- 例 import math def sumofoddFactors( n ):    #prime factors    res = 1    # ignore e