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

C++でx^1、x ^ 2、.....、x^nから取得した値の桁の頻度配列を作成します


2つの整数xとnがあるとします。 (x ^ 1、x ^ 2、…x ^(n – 1)、x ^ n)で発生するインデックス番号の頻度が含まれるような配列を見つける必要があります。したがって、x=15およびn=3の場合、出力は[0、1、2、2、0、3、0、1、0、0]になります。 x^1からx^nであることがわかっているので、値は15、225、および3375です。したがって、周波数配列は0、1、2、2、0、3、0、1、0、0

です。

これを解決するには、次の手順に従います-

  • 0から9までの数字のカウントを格納するために頻度カウント配列を維持します。

  • x^1からx^nまでの各桁をトラバースします。各桁について、頻度カウント配列の対応するインデックスに1を追加します

  • 配列を表示します。

#include <iostream>
#include <cmath>
using namespace std;
void digitCount(double val, long arr[]) {
   while ((long)val > 0) {
      long digit = (long)val % 10;
      arr[(int)digit]++;
      val = (long)val / 10;
   }
}
void generateFreqArray(int x, int n) {
   long freq_count[10]={0};
   for (int i = 1; i <= n; i++){
      double val = pow((double)x, (double)i);
      digitCount(val, freq_count);
   }
   cout << "[";
   for (int i = 0; i <= 9; i++){
      cout << freq_count[i] << " ";
   }
   cout << "\b]";
}
int main() {
   int x = 15, n = 3;
   cout << "The frequency array is: ";
   generateFreqArray(x, n);
}

出力

The frequency array is: [0 1 2 2 0 3 0 1 0 0]

  1. C++のM桁から形成される5で割り切れるN桁の数値

    M桁の配列とともに数値Nを指定しました。私たちの仕事は、5で割り切れる与えられたM桁から形成されたn桁の数を見つけることです。 問題の入力と出力を理解するために、いくつかの例を見てみましょう。 で- N = 2 M = 3 arr = {5, 6, 3} アウト- 2 5で割り切れる2つのN桁の数字35と65があります。別の例を見てみましょう。 入力- N = 1 M = 7 arr = {2, 3, 4, 5, 6, 7, 8} 出力- 1 与えられた配列には、5で割り切れる1桁の数が1つしかないので、私たちのタスクは、5で割り切れるN桁の与えられた数から形成で

  2. C++でのプレオーダートラバーサルから完全なk-aryツリーを構築します

    k-aryツリーのプレオーダートラバーサルを順番に含む配列arr[]が与えられます。目標は、そこから同じk-aryツリーを構築し、そのポストオーダートラバーサルを出力することです。完全なk-aryツリーは、ルートノードに0個またはk個の子、つまり最大でk個の子があるツリーです。 例 入力 int arr[] = {2, 5, 1, 3, 6, 7, 2, 1 }, int size = 8, int children = 2 出力 プレオーダートラバーサルからの2人の子で構築される完全なk-aryツリーを以下に示します- 説明 整数値の配列、または2であるk個の子を持つツリーのプ