给定一个 k 位整数 n=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 n=100
时间: 2023-05-31 15:20:31 浏览: 231
python 实现给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合
5星 · 资源好评率100%
### 回答1:
以下是Python代码实现:
n = input() # 输入整数n
count = [] * 10 # 初始化计数器,长度为10,每个元素初始值为
for i in n:
count[int(i)] += 1 # 将每个数字出现的次数累加到对应的计数器中
for i in range(10):
print(i, ":", count[i]) # 输出每个数字出现的次数
### 回答2:
题目要求我们统计一个整数中每个个位数字出现的次数。因此,我们可以想到创建一个长度为10的数组,分别记录数字0~9出现的次数。然后遍历整个整数n的每一位数字,将该数字对应的计数器加1。
下面是具体操作过程:
1.创建一个长度为10的数组count,用于记录数字0~9出现的次数,初始值都为0。
2.从整数n的最后一位开始往前遍历每一位数字,可以使用取余运算和整除运算实现。
3.对于取出的每一位数字,将count数组中对应位置的计数器加1。
4.遍历完整个整数n后,count数组中记录的就是每个数字出现的次数。
5.最后输出count数组即可。
例如:给定n=100,根据上述操作过程,最后得到的count数组为{2,1,0,0,0,0,0,0,0,0},表示数字0出现了2次,数字1出现了1次,其他数字均未出现。
完整代码如下:
```
#include <iostream>
using namespace std;
int main() {
long long n;
cin >> n; // 输入整数n
int count[10] = {0}; // 记录数字0~9出现的次数,初始化为0
while (n > 0) { // 从整数n的最后一位开始往前遍历每一位数字
int digit = n % 10; // 取出最后一位数字
count[digit]++; // 将该数字对应的计数器加1
n /= 10; // 整除10,去掉最后一位数字
}
for (int i = 0; i < 10; i++) { // 输出count数组
cout << "数字" << i << "出现了" << count[i] << "次" << endl;
}
return 0;
}
```
### 回答3:
这道题目可以使用哈希表来解决,具体步骤如下:
首先,将整数 n 转化为字符串形式,以便进行字符操作。
然后,对于字符串中的每一个字符 d,使用哈希表来记录它出现的次数。我们可以用一个长度为 10 的整型数组来记录,其中数组的下标表示数字 0 到 9,数组的元素值表示对应数字出现的次数。例如,如果数字“3”出现了三次,我们就在下标为 3 的位置上加 3 的值。
最后,我们遍历完整个字符串后,就可以统计每种不同的个位数字出现的次数了。对于输出顺序,我们可以按照数字从小到大的顺序输出。
下面是 Python 的代码实现:
```
n = input()
cnt = [0] * 10 # 初始化数组
for d in n:
cnt[int(d)] += 1 # 更新数组
for i in range(10):
print('{}:{}'.format(i, cnt[i])) # 输出结果
```
对于输入 n=100 的情况,该代码的输出结果为:
```
0:2
1:1
2:0
3:0
4:0
5:0
6:0
7:0
8:0
9:0
```
其中,“0:2”表示数字 0 出现了 2 次,“1:1”表示数字 1 出现了 1 次,以此类推。
阅读全文