![](https://img-blog.csdnimg.cn/77ab5ad85ceb48b9abd852d94c13f7d0.png)
思路:
在[1,n]中循环,然后每一次循环进行位数的拆解,逐位判断是否与x相等,若相等,则次数++
代码实现:
#include <iostream>
using namespace std;
int main()
{
int n,x,sum=0;
cin >>n>>x;//n表示右区间
for (int i=1;i<=n;++i)
{
if (i>=1000000 && i/1000000==x) sum++;//表示百万位
if (i>=100000 && i/100000 %10==x) sum++;//表示十万位
if (i>=10000 && i/10000 %10==x) sum++;//表示万位
if (i>=1000 && i/1000 %10==x) sum++;//表示千位
if (i>=100 && i/100 %10==x) sum++;//表示百位
if (i>=10 && i/10 %10==x) sum++;//表示十位
if (i%10==x) sum++; //表示个位
}
cout<<sum;
return 0;
}
ps:在表示位数进行判断的时候,可以自行设计一个计数器,判断执行,不用一一列出,代码如下:
#include<iostream>
using namespace std;
int main()
{
long long n,i,x,b,c,count=0;
cin>>n>>x;//输入范围与要查的数字;
for(i=1;i<=n;i++)//一到n进行循环;
{
b=i;//为了不改变i的值,就把i赋值给一个数;
while(b!=0)//如果b不等于0,继续循环;
{
c=b%10;//求是否是x,是的话计数器加一;
b=b/10;//求下一个数字是否为x;
if(c==x) count++;//计数器加一;
}
}
cout<<count<<endl;//输出计数器的数字;
return 0;//结束
}