题目背景
Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。
题目描述
Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0…9):每一个数码在计数的过程中出现过多少次?
给出两个整数 M 和 N,求在序列 [M,M+1,M+2,…,N−1,N] 中每一个数码出现了多少次。
输入格式
第 1 行: 两个用空格分开的整数 M 和 N。
输出格式
第 1 行: 十个用空格分开的整数,分别表示数码 0…9 在序列中出现的次数。
输入输出样例
输入 #1
129 137
输出 #1
1 10 2 9 1 1 1 1 0 1
说明/提示
数据保证,1≤M≤N≤2×10^9,N−M≤5×10^5。
思路:
思路1:
定义一个函数,然后从M遍历到N,每次调用一次函数
优点:不用管循环变量是否改变
缺点:要多写一个函数
思路2:
从M遍历到N,每个i都算一下
优点:不用写额外的函数
缺点:每次算的时候,原来的循环变量不能改变
AC代码1:
//思路1
#include<bits/stdc++.h>//万能头文件
using namespace std;//cin,cout必备
int cnt[10];//每个数字的个数
int main()//main主函数
{int m,n;//定义变量cin >> m >> n;//输入for(int i=m;i<=n;i++)//m到n{int j=i;//循环变量不能改变while(j)//一直÷10,直到结果为0{cnt[j%10]++;//对应的数++j/=10;//别忘了这个}}for(int i=0;i<10;i++)//输出0~9的值{cout<<cnt[i]<<" ";}return 0;//程序结束
}
AC代码2:
//思路1
#include<bits/stdc++.h>//万能头文件
using namespace std;//cin,cout必备
int cnt[10];//每个数字的个数
int main()//main主函数
{int m,n;//定义变量cin >> m >> n;//输入for(int i=m;i<=n;i++)//m到n{int j=i;//循环变量不能改变while(j)//一直÷10,直到结果为0{cnt[j%10]++;//对应的数++j/=10;//别忘了这个}}for(int i=0;i<10;i++)//输出0~9的值{cout<<cnt[i]<<" ";}return 0;//程序结束
}
这篇博客就到这里啦,我们下篇再见!