ホームページ >バックエンド開発 >C++ >数値がミュンヒハウゼン数であるかどうかを確認する

数値がミュンヒハウゼン数であるかどうかを確認する

PHPz
PHPz転載
2023-09-05 22:01:071222ブラウズ

数値がミュンヒハウゼン数であるかどうかを確認する

ミュンヒハウゼン数は、固有の特性を持つ奇数です。数値の桁の合計 (累乗) が元の数値と等しい場合、その数値はミュンヒハウゼン数とみなされます。これらの数字は珍しいものであり、その多くは知られていません。 00 = 0 の定義が使用される場合、0 はミュンヒハウゼン数とみなすこともできます。

次の記事では、ミュンヒハウゼン数のこれらの特徴を念頭に置いて、数値がミュンヒハウゼン数であるかどうかを判断する方法を説明します。

###問題文###

現在のタスクは、指定された整数 n がミュンヒハウゼン数であるかどうかを確認することです。つまり、各数値を自乗して合計すると、結果は元の数値と等しくなります。ミュンヒハウゼン数値の場合、プログラムは true を返し、それ以外の場合は false を返す必要があります。

###例### リーリー

説明

- (1の1乗) = 11 = 1。

結果の数値は元の数値と等しいため、1 がミュンヒハウゼン数になります。 リーリー

説明

− (1の1乗) (6の6乗) (0の0乗) (3の3乗) = 1

1

66 00 33 ≠ 1603。 これは 46684 に相当します。結果の数値は元の数値と等しくないため、1603 はミュンヒハウゼン数ではありません。 リーリー

説明

− (3の3乗) (4の4乗) (3の3乗) (5の5乗) = 3

3

44 33 55 = 3435。 結果の数値は元の数値と等しいため、3435 がミュンヒハウゼン数になります。 リーリー

説明

− (4の4乗) (3の3乗) (3の3乗) (5の5乗) = 4

4

33 33 55 ≠ 4335。 結果の数値は元の数値と等しくないため、4335 はミュンヘンの数値ではありません。 解決方法

提供された数値がミュンヒハウゼン数であるかどうかを判断するには、各数値を加算した結果が元の数値と同じかどうかを知る必要があります。次の方法を使用して合計を計算し、結果が元の数値と一致するかどうかを判断できます。

###アルゴリズム###

この方法には次の手順が含まれます -

指定された数値を個々の桁に分解します。

    各数値をそれ自体に上げます。
  • 結果を追加します。
  • 合計を元の数値と比較します。
  • 答えを表示します。
  • 疑似コード
  • 関数 is_munchhausen()

合計値を初期化 = 0

    初期化温度 = n
  • 同時に (温度 > 0)
  • 初期化桁 = temp % 10

  • sum = 合計 pow(数値, 数値)
  • 温度=温度/10

    戻り合計==n

  • 関数 main()
  • nを初期化します

    if (is_munchhausen())
  • cout

  • ######他の###
  • cout

    印刷出力

  • 例: C プログラム

    プログラムは、
  • is_munchhausen()
  • 関数を呼び出すことによって、数値がミュンヒハウゼン数であるかどうかを判断します。この関数は、n に等しい一時変数と別の変数 sum を使用して、各数値を合計した結果の合計を保存します。

    ループの各反復で、'%' 演算子を使用して、temp の各 1 桁にアクセスします。数値の右端の桁を返します。その後、その数値が加算されて合計に加算されます。各反復の終了時に、temp は 10 で除算され、次の数値にアクセスします。ループは温度 > 0 になるまで実行されます。
  • リーリー ###出力### リーリー
時間と空間の複雑さの分析

時間計算量 - O(log n) 時間計算量。n は入力パラメーターの値です。これは、関数 is_munchhausen() の while ループの反復数が、指定された数値の桁数に依存し、log(n) を底とする 10 に比例するためです。この関数は main 関数内で 1 回だけ呼び出されるため、プログラム全体の複雑さは log(n) に比例します。

空間複雑度

- O(1)。この関数は固定メモリを使用して整変数 sum と temp を格納するため、その空間複雑さは入力引数のサイズに関係なく一定です。

###結論は###

要約すると、ミュンヒハウゼン数は、それ自体の数の合計として表現される一意の数です。それらは一般的ではないため、見つけるのは困難な作業になる可能性があります。この記事で説明する解決策は、補助スペースを使用せずに、数値が対数時間でミュンヒハウゼンであるかどうかを簡単にチェックする方法を提供します。この記事では、さまざまな例を使用してミュンヒハウゼン数の概念を詳しく説明します。付属の C コードを使用すると、指定された数値がミュンヒハウゼン数値であるかどうかをすばやく判断できます。

以上が数値がミュンヒハウゼン数であるかどうかを確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。