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

C ++で許可されている2桁(および7)のみのシリーズのn番目の要素を検索します


この問題では、4と7のみで構成される一連の数値を示す整数Nが与えられます。

シリーズは4、7、44、47、74、77、…

タスクは、2桁(および7桁)のみが許可されているシリーズのn番目の要素を見つけることです。

問題を理解するために例を見てみましょう

入力

N = 4,

出力

47

説明

The series is: 4, 7, 44, 47, ….

ソリューションアプローチ

この問題の簡単な解決策は、N番目の数までの系列を作成することです。現在の番号の最後の桁が7の場合、簡単です。前と次の番号の最後の桁は4です。

したがって、1番目と2番目の数字から始めて、次の要素に進みます。

このために、配列シリーズ[n+1]を作成します。

For index series[1] put 4
For index series[2] put 7

次に、Nまでの連続する値について、指定されたインデックスiの値を見つけます。

If i is odd, series[i] = series[i/2]*10 + 4
If i is even, series[i] = series[i/2]*10 + 7

n回の反復後、series[n]で値を返します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int findNthSeriesElement(int N) {
   int series[N+1];
   series[1] = 4;
   series[2] = 7;
   for (int i=3; i<=N; i++) {
      if (i%2 != 0)
         series[i] = series[i/2]*10 + 4;
      else
         series[i] = series[(i/2)-1]*10 + 7;
   }
   return series[N];
}
int main() {
   int N = 9;
   cout<<"The "<<N<<"th element of the array is "<<findNthSeriesElement(N);
   return 0;
}

出力

The 9th element of the array is 474

  1. 数字が7のみで、C++で合計が与えられた最小数

    問題の説明 ラッキーナンバーは、小数表現にラッキー数字4と7のみが含まれる正の整数です。タスクは、数字の合計がnに等しい最小のラッキーナンバーを見つけることです。 例 合計=22の場合、ラッキーナンバーは4 + 4 + 7 + 7=22として4477です アルゴリズム 1. If sum is multiple of 4, then result has all 4s. 2. If sum is multiple of 7, then result has all 7s. 3. If sum is not multiple of 4 or 7, then we can subtract

  2. C++でSternの二原子分子シリーズからn番目の要素を検索します

    ここでは、SternのDiatomicシリーズのn番目の用語を見つける方法を説明します。この系列は、0、1、1、2、1、3、2、3、1、4、3、5、2、5、3、4のようなものです。これはfusc関数とも呼ばれます。このシリーズは次のように定義できます- 𝑝(𝑛)=$ p \ lgroup \ frac {n} {2} \rgroup$𝑤ℎ𝑒𝑛𝑛𝑖𝑠𝑒𝑣𝑒𝑛 𝑝(𝑛)=$ p \ lgroup \ frac {n-1} {2} \ rgroup + p \ lgroup \ frac {n + 1} {2} \rgroup$𝑤ℎ𝑒𝑛𝑛𝑖𝑠𝑜𝑑𝑑