用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]
广告