P1554 梦中的统计
时间限制: 1000 ms 内存限制: 65536 KB
【题目背景】
Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。
【题目描述】
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、先实现一个数的数位分离
2、把分离的数字当成数组的下标 进行累加
3、然后进行一个范围的实现
重点:
数位分离 结合数组存储
//数位分离:
int n;
cin>>n;
while(n!=0)
{
cout<<n%10<<endl;
n = n/10;
}
//一个数字n中出现的次数
int a[100] = {0};//定义存储数字的数组;
int n;
cin>>n;
while(n!=0)
{
a[n%10]++;
n = n/10;
}
for(int i=0; i<10; i++)
{
cout<<a[i]<<" ";
}
【完整代码】
//【完整代码】
#include <iostream>
using namespace std;
int main()
{
int a[100] = {0};//定义存储数字的数组;
int n,m;
cin>>n>>m;
for(int i=n; i<=m; i++)
{
int z = i;
while(z!=0)
{
a[z%10]++;
z = z/10;
}
}
for(int i=0; i<10; i++)
{
cout<<a[i]<<" ";
}
return 0;
}