P1554 梦中的统计
题目背景
Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。
题目描述
Bessie的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0…9):每一个数码在计数的过程中出现过多少次?
给出两个整数 M和 N(1≤M≤N≤2×10^9 以及N−M*≤5×10^5),求每一个数码出现了多少次。
输入格式
第 1行: 两个用空格分开的整数 M和 N。
输出格式
第 1行: 十个用空格分开的整数,分别表示数码0…9 在序列中出现的次数。
输入输出样例
输入 #1
129 137
输出 #1
1 10 2 9 1 1 1 1 0 1
思路:
- 枚举两个数N,M之间的所有数
- 处理每个数,计算出它们0-9出现的次数
利用/ (除法) %(求余)
例如:123/4=30(int型)
例如:236/10=23(最后一位没了)
取末尾数,记录,扔掉末位数。循环,到0结束
错误代码:(全局变量和局部变量错误使用)
此处为什么不能 使用局部变量,我也不清楚,求大佬告知,多谢
#include<iostream>
using namespace std;
int main()
{
int m, n;
int a[10];
cin >> n >> m ;
for (int i = n; i <= m; i++)
for (int p = i; p!=0; p /= 10) a[p % 10]++;
for (int i = 0; i <= 9; i++) cout << a[i] << " ";
return 0;
}
AC代码:
#include<iostream>
using namespace std;
int a[10];
int main()
{
int m, n;
cin >> n >> m ;
for (int i = n; i <= m; i++)
for (int p = i; p!=0; p /= 10) a[p % 10]++;
for (int i = 0; i <= 9; i++) cout << a[i] << " ";
return 0;
}