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

Pythonで奇数桁と偶数桁の数字の積が等しいかどうかを判定する方法

ある整数 n が与えられたとき、奇数番目の桁の数字の積偶数番目の桁の数字の積が等しいかどうかを判定する問題を考えてみましょう。

例えば、入力が n = 2364 の場合、出力は True になります。これは、奇数番目の桁(1桁目・3桁目)の積が 2 × 6 = 12、偶数番目の桁(2桁目・4桁目)の積が 3 × 4 = 12 となり、両者が一致するためです。

解法のアプローチ

この問題は、次の手順で解くことができます。

  • num が 10 未満の場合(桁数が1桁しかない場合)は False を返します。
  • odd_place(奇数桁の積)と even_place(偶数桁の積)をそれぞれ 1 で初期化します。
  • num が 0 より大きい間、以下を繰り返します。
    • num の最下位桁を取り出し、odd_place に掛け合わせます。
    • num を 10 で割って桁を一つずらします。
    • num が 0 になった場合はループを抜けます。
    • 再度最下位桁を取り出し、even_place に掛け合わせます。
    • num を 10 で割ります。
  • 最後に odd_place と even_place が等しければ True、そうでなければ False を返します。

実装例

それでは、実際のコードを見てみましょう。

def solve(num):
    if num < 10:
        return False
    odd_place = 1
    even_place = 1
    while num > 0:
        d = num % 10
        odd_place *= d
        num = num // 10
        if num == 0:
            break
        d = num % 10
        even_place *= d
        num = num // 10
    if odd_place == even_place:
        return True
    return False

num = 2364
print(solve(num))

入力

2364

出力

True

コードのポイント

このアルゴリズムでは、% 10(剰余演算)で最下位の桁を取得し、// 10(整数除算)で桁を一つずつ削りながら処理を進めます。右側の桁から順に交互に odd_place と even_place に掛けていくことで、効率的に両者の積を計算できます。計算量は桁数に比例する O(d)(d は桁数)となり、非常に効率的です。

  1. Pythonで奇数桁と偶数桁の合計の差を判定するプログラム

    この記事では、与えられた問題を解決するための解法とアプローチについて詳しく解説します。 問題文 整数が1つ与えられたとき、奇数桁の合計と偶数桁の合計の差が0であるかどうかを判定する必要があります。 素朴なアプローチ(ブルートフォース) 最も単純な方法は、数値を構成するすべての偶数桁と奇数桁の合計をそれぞれ計算し、その差を求めることです。しかし、この方法では各桁を順番に処理するため、桁数に比例した計算時間が必要になります。 効率的なアプローチ:11の倍数判定を活用 計算時間を削減するために、「暗算の数学」でよく知られている性質を利用します。それは「ある整数の奇数桁の合計と偶数桁の合計の差が0にな

  2. Pythonで数値が奇数か偶数かを判定する方法を解説

    Pythonで数値が奇数か偶数かを判定する方法 Pythonでは、剰余演算子(%)を使うことで、数値が奇数か偶数かを簡単に判定できます。剰余演算子は「余り演算子」とも呼ばれ、ある数を別の数で割ったときの余りを求めるための演算子です。 判定の考え方はシンプルです。対象の数値を2で割り、その余りを確認します。余りが0であれば偶数、0以外(1)であれば奇数であると判断できます。 サンプルコード no = int(input(enter number)) if no % 2 == 0: print({} is even.format(no)) else: print({} is odd