阅读量:0
题目背景
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;//程序结束 }
这篇博客就到这里啦,我们下篇再见!