ミュンヒハウゼン数は、固有の特性を持つ奇数です。数値の桁の合計 (累乗) が元の数値と等しい場合、その数値はミュンヒハウゼン数とみなされます。これらの数字は珍しいものであり、その多くは知られていません。 00 = 0 の定義が使用される場合、0 はミュンヒハウゼン数とみなすこともできます。
次の記事では、ミュンヒハウゼン数のこれらの特徴を念頭に置いて、数値がミュンヒハウゼン数であるかどうかを判断する方法を説明します。
###問題文###結果の数値は元の数値と等しいため、1 がミュンヒハウゼン数になります。 リーリー
説明− (1の1乗) (6の6乗) (0の0乗) (3の3乗) = 1
166 00 33 ≠ 1603。 これは 46684 に相当します。結果の数値は元の数値と等しくないため、1603 はミュンヒハウゼン数ではありません。 リーリー
説明− (3の3乗) (4の4乗) (3の3乗) (5の5乗) = 3
344 33 55 = 3435。 結果の数値は元の数値と等しいため、3435 がミュンヒハウゼン数になります。 リーリー
説明− (4の4乗) (3の3乗) (3の3乗) (5の5乗) = 4
433 33 55 ≠ 4335。 結果の数値は元の数値と等しくないため、4335 はミュンヘンの数値ではありません。 解決方法
提供された数値がミュンヒハウゼン数であるかどうかを判断するには、各数値を加算した結果が元の数値と同じかどうかを知る必要があります。次の方法を使用して合計を計算し、結果が元の数値と一致するかどうかを判断できます。
###アルゴリズム###
関数 is_munchhausen()
初期化桁 = temp % 10
温度=温度/10
戻り合計==n
cout
印刷出力
例: C プログラム
プログラムは、
ループの各反復で、'%' 演算子を使用して、temp の各 1 桁にアクセスします。数値の右端の桁を返します。その後、その数値が加算されて合計に加算されます。各反復の終了時に、temp は 10 で除算され、次の数値にアクセスします。ループは温度 > 0 になるまで実行されます。
時間計算量 - O(log n) 時間計算量。n は入力パラメーターの値です。これは、関数 is_munchhausen() の while ループの反復数が、指定された数値の桁数に依存し、log(n) を底とする 10 に比例するためです。この関数は main 関数内で 1 回だけ呼び出されるため、プログラム全体の複雑さは log(n) に比例します。
空間複雑度
- O(1)。この関数は固定メモリを使用して整変数 sum と temp を格納するため、その空間複雑さは入力引数のサイズに関係なく一定です。以上が数値がミュンヒハウゼン数であるかどうかを確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。