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
- ループから抜け出す
- s [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の数値
- s[i-1]が"1"と同じ場合、
- それ以外の場合、
- 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
- 小さく返す
- 大きく返す
理解を深めるために、次の実装を見てみましょう-
例
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
-
Pythonですべての木を燃やすのにかかる日数を見つけるためのプログラム
3つのタイプのセルがあるフォレストを表す2Dマトリックスがあるとします。0空のセル1ツリーセル2火のセルのツリー毎日、隣接するセル(上、下、左、右、対角線)木が燃えています。すべての木が燃えるのにかかる日数を見つけなければなりません。それが不可能な場合は-1を返します。 したがって、入力が次のような場合 1 2 1 1 0 1 1 1 1 その場合、出力は4になります これを解決するには、次の手順に従います- ans:=0 twos:=新しいリスト 行列の行数が0から行数の範囲のiについては、 0か
-
数の奇数因子の合計を見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の奇数因子の合計を見つけることです。 ここでは、最初にすべての偶数の要因を排除する必要があります。 すべての偶数因子を削除するために、nを2で割り切れるまで繰り返し除算します。このステップの後、数の奇数因子のみを取得します。 以下は実装です- 例 import math def sumofoddFactors( n ): #prime factors res = 1 # ignore e