求1-n当中x出现的次数问题
试计算在区间 11 到 nn的所有整数中,数字x(0 ≤ x ≤ 9)x(0≤x≤9)共出现了多少次?例如,在 11到1111中,即在 1,2,3,4,5,6,7,8,9,10,111,2,3,4,5,6,7,8,9,10,11 中,数字 11 出现了 44 次。
关键点
- 如果之后两位数,比较简单
- 其中需要考虑到有三位数、四位数、甚至是多位数的情况 就有点复杂
- 解决方法 a, 用字符串 b. 不断的舍去最后一位即可
字符串的方式,代码如下
#include <iostream>
using namespace std;
int main()
{
long sum,total=0;
int m;
string s;
cin>>sum>>m;
for(long i=0;i<=sum;i++)
{
s+=to_string(i);
}
long k=s.length();
for(long i=0;i<k;i++)
{
if(s[i]-48==m)
total++;
}
cout<<total<<endl;
return 0;
}