Vijos P1848 记数问题【进制】
描述
试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。
格式
输入格式
输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。
输出格式
输出共 1 行,包含一个整数,表示 x 出现的次数。
样例1
样例输入1
11 1
样例输出1
4
限制
每个测试点1s。
提示
对于 100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
来源
NOIP 2013 普及组
问题链接:Vijos P1848 记数问题
问题分析:
穷举法实现,没有什么技术含量。
一个数模除10的结果是该数的个位,一个数处以(整除)10的结果是该数10进制右移1位(去掉个位)。
程序说明:
(略)
参考链接:(略)
AC的C++程序如下:
#include <iostream> using namespace std; int main() { int n, x, ans, v; cin >> n >> x; ans = 0; for(int i=1; i<=n; i++) { v = i; while(v) { if(v % 10 == x) ans++; v /= 10; } } cout << ans << endl; return 0; }