题目描述
Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码( 0 … 9 0 \ldots 9 0…9):每一个数码在计数的过程中出现过多少次?给出两个整数 M M M 和 N N N,求在序列 [ M , M + 1 , M + 2 , … , N − 1 , N ] [M, M + 1, M + 2, \ldots, N - 1, N] [M,M+1,M+2,…,N−1,N] 中每一个数码出现了多少次。
输入格式
第 1 1 1 行: 两个用空格分开的整数 M M M 和 N N N。
输出格式
第 1 1 1 行: 十个用空格分开的整数,分别表示数码 0 … 9 0 \ldots 9 0…9 在序列中出现的次数。
样例 #1
样例输入 #1
129 137
样例输出 #1
1 10 2 9 1 1 1 1 0 1
提示
数据保证, 1 ≤ M ≤ N ≤ 2 × 1 0 9 1 \leq M \leq N \leq 2 \times 10^9 1≤M≤N≤2×109, N − M ≤ 5 × 1 0 5 N-M \leq 5 \times 10^5 N−M≤5×105。
本题思路为:暴力枚举拆分每一个数,然后再拿一个桶来装0~9出现的次数
最后输出即可
#include <bits/stdc++.h> //万能头
using namespace std;
#define ll long long
ll n,a[105],ans,m;
int main() {
scanf("%lld %lld",&n,&m);//输入
for(int i=n;i<=m;i++) {
int op=i;
while(op!=0) { //拆分区间中每一个数的各个位置上的数字
int s=op%10;
a[s]++;
op/=10;
}
}
for(int i=0;i<=9;i++) cout<<a[i]<<" ";//输出答案
}