一、题目描述
试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1
到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。
输入输出格式
输入格式:输入文件名为 count.in。
输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。
输出格式:
输出文件名为 count.out。
输出共 1 行,包含一个整数,表示 x 出现的次数。
输入输出样例
说明
对于 100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
二、解题思路
本方法的思路在于对1到n的每一个数进行判断,一位以上的数逐位判断,累加结果即可。
三、参考代码
#include<iostream>
using namespace std;
long js(int n,int x)//定义函数,判断每一位中出现数字的个数
{
int i,j;
long s=0;//初始计数器的值
for(i=1;i<=n;i++)//进行循环
{
j=i; //j是判断位数的一个计数器
while(j>0)//如果位数不为0,即该位有数,进行循环,若该位为0,及时停止循环,跳到下一个数
{
if(j%10==x)//如果取余后等于x,判断个数的计数器+1
{
s++;
}
j=j/10;//把j除以10,到下一位后继续循环
}
}
return s;//返回计数器的值
}
int main()//进入主函数
{
int t,c;
long r;//主函数里的计数器
cin>>t>>c;
r=js(t,c);//用函数进行判断
cout<<r<<endl;//输出计数器
return 0;
}