Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 x^1, x^2, ....., x^n에서 얻은 값의 자릿수로 빈도 배열을 구성합니다.

<시간/>

두 개의 정수 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]