数値の順列が3で割り切れ、Pythonで回文であるかどうかを確認します
大きな正の整数Nが提供されているとします。その桁順列から数値を見つけることができるかどうかを確認する必要があります。順列がその逆の形式、つまり回文に等しく、3で割り切れるようなものです。
たとえば、番号132213があるとします。番号の桁から順列を確認すると、回文であり、3で割り切れる123321が得られます。入力番号から可能な順列があるかどうかを確認する必要があります。上記の条件を満たす。
したがって、入力が次のようになっている場合:input_num =132213、出力は「1つ以上の順列は回文であり、3で割り切れる」になります。
これを解決するには、次の手順に従います-
- digit_array:=0で初期化されたサイズ10の新しいリスト
- input_sum:=0
- input_numがゼロでない場合は、
- input_sum:=input_sum +(input_num mod 10)
- digit_array [input_num mod 10]:=digit_array [input_num mod 10] + 1
- input_num:=(input_num / 10)のフロア値
- input_sum mod 3が0と同じでない場合、
- Falseを返す
- index_odd:=0
- 0から9の範囲のiについては、
- digit_array [i] mod 2が0と同じでない場合、
- index_odd:=index_odd + 1
- digit_array [i] mod 2が0と同じでない場合、
- index_odd> 1の場合、
- return "順列は回文ではなく、3で割り切れる"
- それ以外の場合、
- return "1つ以上の順列は回文であり、3で割り切れる"
理解を深めるために、次の実装を見てみましょう-
例
def solve(input_num): digit_array = [0] * 10 input_sum = 0 while (input_num) : input_sum += input_num % 10 digit_array[input_num % 10] += 1 input_num //= 10 if (input_sum % 3 != 0): return False index_odd = 0 for i in range(10) : if (digit_array[i] % 2 != 0): index_odd += 1 if (index_odd > 1): return "No permutation is a palindrome and is divisible by three" else: return "One or more permutation is a palindrome and is divisible by three" input_num = 132213 print(solve(input_num))
入力
132213
出力
One or more permutation is a palindrome and is divisible by three
-
素数をチェックするPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数が与えられているので、与えられた数が素数であるかどうかを確認する必要があります。 1より大きい特定の正の数で、1以外の要素はなく、その数自体は素数と呼ばれます。 2、3、5、7などは他の要素がないため素数です。 以下のこのプログラムでは、素数または非素数の性質について番号がチェックされます。 1以下の数は素数とは言えません。したがって、数値が1より大きい場合にのみ反復します。 ここで、その数が2から(num-1 // 2)の範囲の任意の数で正確に割り切れるかどうかを確認します。指定された範囲内に何ら
-
アームストロング数をチェックするPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 整数nが与えられた場合、与えられた整数がアームストロング数であることを確認する必要があります。 正の整数は、次の場合、n次のアームストロング数と呼ばれます abcd... = a^n + b^n + c^n + d^n + … ここでは、3桁のアームストロング数、つまり3桁のブルートフォースアプローチについて説明します。 オーダーnのアームストロング番号を確認するには、3を行番号7の対応するオーダー値に置き換える必要があります。 それでは、実装を見てみましょう- 例