题目背景
Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。
题目描述
Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0 \ldots 90…9):每一个数码在计数的过程中出现过多少次?
给出两个整数 MM 和 NN,求在序列 [M, M + 1, M + 2, \ldots, N - 1, N][M,M+1,M+2,…,N−1,N] 中每一个数码出现了多少次。
输入格式
第 11 行: 两个用空格分开的整数 MM 和 NN。
输出格式
第 11 行: 十个用空格分开的整数,分别表示数码 0 \ldots 90…9 在序列中出现的次数。
输入输出样例
输入 #1
129 137输出 #1
1 10 2 9 1 1 1 1 0 1说明/提示
数据保证,1 \leq M \leq N \leq 2 \times 10^91≤M≤N≤2×109,N-M \leq 5 \times 10^5N−M≤5×105。
定义空数组:
int n,m,b[10]={};
每位上的数:
b[(a%10)]++;
除去一位数:
a/=10;
循环遍历所有字母:
while(a!=0){
b[(a%10)]++;//每位上的数
a/=10;//除去一位数
}
从n到m每个数算一遍:
for(int i=n;i<=m;i++){
int a=i;
while(a!=0){
b[(a%10)]++;//每位上的数
a/=10;//除去一位数
}//循环遍历所有字母
}
输出每个数出现的个数:
for(int i=0;i<=9;i++){
cout<<b[i]<<" ";
}
源代码:
#include<iostream>
using namespace std;
int main(){
int n,m,b[10]={};//定义空数组
cin>>n>>m;
for(int i=n;i<=m;i++){
int a=i;
while(a!=0){
b[(a%10)]++;//每位上的数
a/=10;//除去一位数
}//循环遍历所有字母
}//从n到m每个数算一遍
for(int i=0;i<=9;i++){
cout<<b[i]<<" ";
}//输出每个数出现的个数
return 0;
}