梦中统计
Description
在L-R的整数中,每个数各位上每个数字一共出现多少次?
Input
一行,包含两个整数,用空格隔开的M和N。
Output
一行,包含十个用空格隔开的整数,分别表示数字0,1,2,3,.....,9在序列中出现的次数。
Sample Input
129 137
Sample Output
1 10 2 9 1 1 1 1 0 1
HINT
均在int范围
python解法
# 从用户输入读取两个整数值,分别赋值给l和r
l, r = map(int, input().split())
# 初始化一个长度为10的列表,用于记录0到9每个数字出现的次数
digit_counts = [0] * 10
# 遍历区间[l, r]内的每一个整数
for i in range(l, r + 1):
# 转换为正数进行处理,确保负数的每一位数字也被正确计数
k = abs(i)
# 当k不为0时,循环统计其每一位上的数字
while k > 0:
# 使用取模运算得到k的最后一位数字
digit = k % 10
# 对应位置的计数加1
digit_counts[digit] += 1
# 整数除法去掉k的最后一位数字
k //= 10
# 使用join和map函数将列表中的数字转换为字符串,并用空格连接,然后输出结果
print(" ".join(map(str, digit_counts)))
c++解法
#include<bits/stdc++.h> // 包含大多数标准库头文件
using namespace std;
int main() {
int l, r, k; // 定义三个整数变量l, r, k
cin >> l >> r; // 从标准输入读取两个整数l和r
int a[10] = {0}; // 定义一个长度为10的整数数组a,并初始化为0。用于存储0到9每个数字出现的次数
for (int i = l; i <= r; i++) { // 循环遍历从l到r的每一个整数
if (i < 0) { // 如果当前整数i小于0
k = -i; // 取i的相反数
} else {
k = i; // 否则k就是i本身
}
while (k) { // 当k不为0时,循环进行以下操作
a[k % 10]++; // 统计k的最后一位数字出现的次数,并存储在数组a中对应的位置
k /= 10; // 去掉k的最后一位数字
}
}
for (int i = 0; i <= 9; i++) { // 循环遍历数组a
cout << a[i] << " "; // 输出每个数字出现的次数,并在后面添加一个空格
}
return 0; // 程序正常结束,返回0
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=195
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=195
文章版权归作者所有,未经允许请勿转载。
THE END