ホームページ >バックエンド開発 >C++ >繰り返される数値内の 1 の最小数

繰り返される数値内の 1 の最小数

PHPz
PHPz転載
2023-09-06 17:21:091243ブラウズ

繰り返される数値内の 1 の最小数

この問題では、1 の数を最小単位で出力するだけです。

reunit は、カジュアルな数学における 11、111、または 1111 のような、数字 1 だけを含む正の数です。再会の形式は $\mathrm{(10*n-1)/9}$

です ###例###

$\mathrm{(10*10-1)/9}$ は

11 を与えます。

$\mathrm{(10*100-1)/9}$ は

111 を与えます。

$\mathrm{(10*1000-1)/9}$ は

1111 を与えます。

上記の質問は、単位番号が 3 である任意の正の整数 N が与えられ、与えられた数 N で割り切れる最小単位を決定する必要があることを示しています。

###例えば、###

N=13 とすると。

出力: 6

N、つまり 111111 は 8547 を得る 13 の完全約数です。 111111 は、13 で割り切れる重さの最小単位です。したがって、最小重み単位の 1 の数は 6 となり、目的の出力が得られます。

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

繰り返しの数が 1、11、111、1111 などであることがわかっているからです。 x の後の再結合は、$\mathrm{(x*10 1)}$ として定義できます。

このアルゴリズムは、整数 N が剰余 rem を残す場合、再結合の剰余は常に $\mathrm{(rem*10 1)\%N}$ になるという概念にのみ基づいています。

再結合の数を決定するのは、数が非常に大きくなる可能性があるため非常に面倒になる可能性があるため、剰余を 0 になるまで更新し、各更新ステップで 1 の数を数えることによって答えを見つけます。剰余を 0 にするのに必要な反復回数は、最小重み単位の 1 の数になります。

以下はアルゴリズムの段階的な説明です -

ステップ 1

-
  • 変数剰余を 1 として宣言し、各 N の剰余を格納します iteration と itr は 1 で、反復回数をカウントします。

    ステップ 2

  • 剰余が 0 になるまで while ループを使用します。 ステップ 3 p>

  • 各ステップで、残りを更新し、itr 1 を増やします。 ステップ 4

  • 剰余が 0 に等しくなったら、itr を返します。 このアプローチを N=13 で試してみましょう。 while ループの前に剰余と itr を 1 として宣言しているためです。 ###今、###

最初の反復では、剰余は (remainder*10 1)%N、つまり 11 になります。 剰余 = 11 および itr = 2。 余りが 0 になるまで同じアルゴリズムに従います。

反復 2 では、剰余=7 および itr=3

  • 反復 3 では、剰余 =6 および itr=4

  • 反復 4 では、剰余 =9 および itr=5

  • 反復 5 では、剰余 = 0 および itr = 6 です。

  • 余りが 0 になるので、目的の出力である 6 である itr を返します。

    ###方法###
  • 以下は、上記のメソッドを C で実装したものです -
  • リーリー ###出力### リーリー

    23 で割り切れる繰り返し単位の最小数は 22 個になります。

    ###結論は###
  • 上記の記事では、任意の正の整数 N を 1 桁の 3 で割り切れる最小単位の数を求める問題を解決しようとしました。この記事がこの問題の概念を明確にするのに役立つことを願っています。

以上が繰り返される数値内の 1 の最小数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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