编程求在l-r的整数中,每个数各位上每个数字一共出现多少次?c++
时间: 2024-11-15 07:33:56 浏览: 0
代码_C循环-求各位数字之积_
在C++中,你可以通过创建一个计数哈希表来解决这个问题。首先,遍历给定范围内的每个整数,然后对每个整数进行拆分,统计每个位上的数字出现次数。这里是一个简单的示例:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
// 函数用于获取一个整数的每一位并更新计数
void countDigits(int num, unordered_map<char, int>& counts) {
while (num > 0) {
char digit = num % 10; // 取个位数
counts[digit]++;
num /= 10; // 移除个位
}
}
// 主函数计算l到r范围内每个数每位上的数字总次数
int totalDigitCounts(int l, int r) {
unordered_map<char, int> counts(10, 0); // 初始化一个大小为10的空哈希表,存储0-9的计数
for (int i = l; i <= r; ++i) {
countDigits(i, counts);
}
return counts;
}
int main() {
int l = 1, r = 100; // 示例范围
auto result = totalDigitCounts(l, r);
for (auto& pair : result) {
cout << "数字 " << pair.first << " 在范围 [" << l << ", " << r << "] 中出现了 " << pair.second << " 次" << endl;
}
return 0;
}
```
这个程序会输出指定范围内每个数字在所有整数中出现的次数。
阅读全文