题目描述:
Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。
她开始注意每一个数码(0 …9):每一个数码在计数的过程中出现过多少次?
给出两个整数 M 和 N,求在序列[M,M+1,M+2…N-1,N]中每一个数码出现了多少次。
输入格式:
第 1 行: 两个用空格分开的整数 M 和 N。
输出格式:
第 1 行: 十个用空格分开的整数,分别表示数码 0…9 在序列中出现的次数。
输入输出样例:
输入
129 137
输出
1 10 2 9 1 1 1 1 0 1
思路:
我们来看一下:
1%10=1;
2%10=2;
3%10=3;
.
.
.
.
.
.
111%10=1;
112%10=2;
不难看出:
对于任意一个整数x,有:x%n=x的个位数字。
所以:
我们可以定义一个a数组,存储0…9出现的次数。
再用一个双重循环,外循环枚举m…n的每一个数字,内循环枚举这个数字的每一位即可。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[10];
int main()
{
cin>>n>>m;
for(int i=n;i<=m;i++)
{
for(int j=i;j;j/=10)
{
a[j%10]++;
}
}
for(int i=0;i<=9;i++)
{
cout<<a[i]<<" ";
}
return 0;
}