ホームページ > バックエンド開発 > C++ > 2、3、5、7で構成される数字のnの位置は何ですか?

2、3、5、7で構成される数字のnの位置は何ですか?

WBOY
リリース: 2023-08-27 13:53:10
転載
1379 人が閲覧しました

2, 3, 5, 7组成的数字中,n的位置是多少?

問題ステートメントは、2、3、5、7 で構成される数値内の n の位置を出力することで構成されます。ここで、n はユーザーが指定した任意の正の数です。

2、3、5、7 で構成される数値は、最初の 4 つの素数である 2、3、5、または 7 のみを含む厳密に増加する数値のシーケンスであることを意味します。番号が 2、3、5、7、22、23、25、27、32、33、35、37 であるため、すべての番号が 2、3、5、7 のみであるシーケンスの最初のいくつかの番号、など。

基本的に、シーケンス内の各数値はこれら 4 つの数値 (つまり、2、3、5、または 7) の組み合わせであり、シーケンスは昇順に配置されます。

この質問では、桁が 2、3、5、7 のみの数値 N が与えられます。シーケンス内の指定された数値の位置を見つけて出力する必要があります。これにはデジタル出力が必要です。

次の例でこの問題をよりよく理解しましょう。

リーリー

説明 - 入力に 2、3、5、または 7 のみを含む指定された数値は 33 です。数字 2、3、5、または 7 のみを含む数列では、33 の位置は 10 番目の位置になります。したがって、出力は 10 になります。

リーリー

説明 - 入力の数値は 52 です。シーケンスのパターンに従うと、各数値の桁は 2、3、5、または 7 であり、シーケンスは厳密に昇順であり、13 番目の位置に 52 が見つかります。したがって、望ましい出力は 13 です。

シーケンス全体を作成せずに、指定された数値の位置を直接見つけるアルゴリズムを理解しましょう。

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

数値が 2、3、5、または 7 のみの数列を見ると、特定の数値との組み合わせは 4 つしか形成できないことがわかります。このロジックを使用して、任意の数値 N の位置を計算します。

最初の 4 桁の位置は次のとおりです。

2: 第 1 位

3: 2位

5:3位

7:4位

シーケンスは昇順であるため、特定の数字で 4 つの数字しか形成できないため、次の 4 つの数字は 2 桁となり、最初の数字は 2 になります。

左側の最初の桁の位置に 4 を掛け、その特定の数字の位置を加算することで、任意の数字の位置を見つけることができます。

例: N=52

初期位置は0になります。

左の番号から順に、5 の位置は

position*4 5

の位置、つまり 0*4 3=3 となります。現在のポジションは3です。 次の数値は 2 なので、数値の位置は 3*4 1 になります。現在の位置は 3 × 4 であるため、現在の数値の位置を加算すると、位置 13 が得られます。つまり、位置は 52 個あります。数字の並びで。

この問題を解決するには、位置を 0 に初期化するだけです。次に、番号の最後の桁まで各番号をチェックし続け、それに応じて位置を更新します -

番号2の場合、位置は位置*4 1となります。

番号3の場合、位置は位置*4 2となります。

5番の場合、ポジションはポジション*4 3となります。

7番の場合、ポジションはposition*4 4となります。

可能な数値ごとに 4 つの組み合わせしか作成できないため、4 を乗算して位置を更新します。したがって、位置に 4 を乗算し、現在の数値の位置を加算するたびに、数値 N の位置が得られます。これは、2、3、5、または 7 のみです。

問題を効率的に解決するために、このアルゴリズムをアプローチに使用します。

###方法###

2、3、5、または 7 のみからなる数値 N の位置を出力するアルゴリズムをメソッドに実装するときに従うべき手順 -

指定された数値 (2、3、5、または 7) の位置を取得する関数を作成します。

  • 入力数値 N を文字列の形式で取得します。

  • したがって、i=0 から i

  • 最初のケースでは、i 番目の数値が 2 の場合、1 は 2 の位置であるため、その位置に 4 と 1 を掛けます。同様に、アルゴリズムのセクションで説明した i 番目の桁に基づいて、式を使用して i 番目の桁までの数値の位置を計算します。

  • 各反復では、現在の i 番目の番号に基づいて位置が継続的に更新されます。

  • 文字列全体の反復処理が終了したら、その場所に格納されている値を返します。これが必要な出力です。

  • このメソッドの C コード:
リーリー ###出力### リーリー

時間計算量

- O(n)、n は文字列の長さ、または数値の桁数です。これは、for ループ内で n 回反復して指定された位置の位置を計算するためです。シーケンス番号

スペースの複雑さ

- 問題を解決するために余分なスペースを使用していないため、O(1)。 ###結論は### この記事では、2、3、5、または 7 の数値シーケンス内の数値 N の位置を見つけるアルゴリズムについて説明します。O(n) で問題を効率的に解決するアプローチでこのアルゴリズムを実装しました。 time 余分なスペースを使用せずに C を使用します。

この記事を読んで、この問題と C での解決方法を理解できることを願っています。

以上が2、3、5、7で構成される数字のnの位置は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート