题目背景
NOIP2013 普及组 T1
题目描述
试计算在区间 1 到 n 的所有整数中,数字 x(0≤x≤9)共出现了多少次?例如,在 1到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11中,数字 1 出现了 4 次。
输入格式
2 个整数 n,x之间用一个空格隔开。
输出格式
1 个整数,表示 x 出现的次数。
输入输出样例
输入
11 1
输出
4
说明/提示
对于 100%的数据,1≤n≤10^6,0≤x≤9。
解法:将其转化为 字符串,统计该字符串中,某个字符出现的次数即可。
转化为字符串,可利用C++的<algorithm>
string s=to_string(123) 可进行任意类型的转换
或者利用进行多个变量的转化
stringstream ss;
ss<<a<<b<<c;
string s=ss.str();
统计某个字符串s中字符x出现的次数
count(s.begin(),s.end(),x);
代码如下
#include<iostream>
#include<algorithm>
#include<sstream>
using namespace std;
int main() {
int n,x;
cin>>n>>x;
stringstream ss;
for(int i=1;i<=n;i++)
{
ss<<i;
}
string s=ss.str();
cout<<count(s.begin(),s.end(),x + '0') <<endl;
return 0;
}