给定一个 k 位整数 n=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 n=100311,则有 2 个 0,3 个 1,和 1 个 3。
时间: 2023-06-05 08:47:33 浏览: 223
题目中给定一个整数 n,其中 n=dk^10k-1+⋯+d1×10^1+d0。请编写程序统计每种不同的个位数字出现的次数。例如,给定 n=100311,则有 2 个 0,3 个 1,和 1 个 3 出现。
解题思路:
首先,我们需要将整数 n 拆分成每个数位的数字。然后,我们可以使用一个字典来记录每个数字出现的次数。最后,我们将字典中的结果输出。
具体实现:
1. 用字符串的方式拆分整数 n 的每个数位数字
2. 使用字典记录每个数位数字出现的次数
3. 输出字典中每个数字出现的次数
代码实现如下:
n = 100311 # 给定整数
d = str(n) # 将整数转换成字符串
count = {} # 定义一个空的字典,用于记录每个数字出现的次数
for digit in d: # 对整数 n 的每个数位数字进行循环
if digit in count: # 如果这个数字已经在字典里面出现过
count[digit] += 1 # 将出现次数加1
else: # 如果这个数字没有在字典里面出现过
count[digit] = 1 # 将这个数字加入字典,并将出现次数设为1
# 输出统计结果
for digit, freq in count.items():
print(f"数字 {digit} 出现了 {freq} 次")
相关问题
给定一个 k 位整数 n=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 n=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 次,以此类推。
个位数统计 (15 分)给定一个 k 位整数 N=d k−1 10 k−1 +⋯+d 1 10 1 +d 0 (0≤d i ≤9, i=0,⋯,k−
1),请编写程序统计每个不同的数字出现的次数。
输入格式:
输入在一行中给出一个不超过 105 位的非负整数 N。
输出格式:
在一行中按照 “数字:出现次数” 的格式输出,其中数字从小到大,一共列出不同数字的个数。如果某个数字没有出现,则不输出。
输入样例:
1234567890987654321123456789
输出样例:
0:2
1:4
2:4
3:4
4:4
5:4
6:4
7:4
8:3
9:3
【样例说明】这个数一共有 2 个 0、4 个 1、4 个 2……4 个 9。
时间限制:400 ms
内存限制:64 MB
代码长度限制:16 KB