求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;
}
直接求余数的方法来自洛谷,个人觉得思路十分不错,故做好笔记。
#include<iostream>
using namespace std;

这篇博客探讨了如何求解在1到n的整数区间内,数字x出现的次数。举例说明了在1到1111中数字1出现的次数,并提到了两种解决方案:通过字符串操作和使用求余数的数学方法。文章强调了处理不同位数的数字时的复杂性,并分享了从洛谷平台获得的直接求余数的思路。
最低0.47元/天 解锁文章
407

被折叠的 条评论
为什么被折叠?



