Giả sử chúng ta có hai số nguyên x và n. Chúng ta phải tìm mảng sao cho nó chứa tần suất của các số chỉ số xuất hiện trong (x ^ 1, x ^ 2,… x ^ (n - 1), x ^ n). Vì vậy, nếu x =15 và n =3, thì đầu ra sẽ là [0, 1, 2, 2, 0, 3, 0, 1, 0, 0]. Như chúng ta biết rằng x ^ 1 đến x ^ n, các giá trị là 15, 225 và 3375. Vì vậy, mảng tần số là 0, 1, 2, 2, 0, 3, 0, 1, 0, 0
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Duy trì mảng đếm tần số để lưu trữ số lượng các chữ số từ 0 đến 9.
-
Duyệt qua từng chữ số của x ^ 1 đến x ^ n. Đối với mỗi chữ số, thêm 1 vào chỉ số tương ứng trong mảng đếm tần số
-
Hiển thị mảng.
Ví dụ
#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); }
Đầu ra
The frequency array is: [0 1 2 2 0 3 0 1 0 0]