P1980 [NOIP2013 普及组] 计数问题
//知识点:sprintf、string
//自用学习笔记
题目:计算1到n中每个数字中,x出现了几次
例:
n=11,x=1
输入:
11 1
输出:
4
解释:
1 2 3 4 5 6 7 8 9 10 11中出现了4次字符1,输出为ans
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin >> a;
//输入最大数字
char f;
cin >> f;
//输入目标数字
char b[1000009];
//(未使用该计划)sprintf将int数据转换为char,原计划用find函数
//但是转换为字符串之后,可以在for循环中使用strlen依次遍历每个字符
int ans = 0;//储存answer
for(int i = 1 ; i <= a ; i++)
{
sprintf(b,"%d",i);
//sprintf将int数据转换为char,实际上只使用了strlen
string str = b;
for(int j = 0 ; j < strlen(b) ; j++)
{
//测试cout << str[j]<<" ";
if(str[j] == f)//判断每个字符是否等于目标数据
{
//测试cout << "*";
ans++;//储存answer
}
}
//测试cout << endl;
}
cout << ans;
return 0;
}