【普及-】[NOIP2013普及组]计数问题(C++/Python3)
看在作者大大如此用心打代码的份上,就点个三连吧!!!
级别: | 普及-(部分网站不一样) |
难度: | 低 |
适做年龄: | 初中组 |
题目:
描述
试计算在区间 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出现的次数。
用例输入 1
11 1
用例输出 1
4
提示
对于 100%的数据,1≤n≤1,000,000,0≤x≤9。
解答:(C++)
#include<bits/stdc++.h>
using namespace std;
int num(int n, int x) {
int z = 0;
if (n < 10) {
if (n == x)z += 1;
else z += 0;
} else if (n < 100) {
if (n / 10 == x)z += 1;
if (n % 10 == x)z += 1;
else z += 0;
} else if (n < 1000) {
if (n / 100 == x)z += 1;
if (n % 10 == x)z += 1;
if (n / 10 % 10 == x)z += 1;
else z += 0;
} else if (n < 10000) {
if (n / 1000 == x)z += 1;
if (n % 10 == x)z += 1;
if (n / 10 % 10 == x)z += 1;
if (n / 100 % 10 == x)z += 1;
else z += 0;
} else if (n < 100000) {
if (n / 10000 == x)z += 1;
if (n % 10 == x)z += 1;
if (n / 10 % 10 == x)z += 1;
if (n / 100 % 10 == x)z += 1;
if (n / 1000 % 10 == x)z += 1;
else z += 0;
} else if (n < 1000000) {
if (n / 100000 == x)z += 1;
if (n % 10 == x)z += 1;
if (n / 10 % 10 == x)z += 1;
if (n / 100 % 10 == x)z += 1;
if (n / 1000 % 10 == x)z += 1;
if (n / 10000 % 10 == x)z += 1;
else z += 0;
} else if (n < 10000000) {
if (n / 1000000 == x)z += 1;
if (n % 10 == x)z += 1;
if (n / 10 % 10 == x)z += 1;
if (n / 100 % 10 == x)z += 1;
if (n / 1000 % 10 == x)z += 1;
if (n / 10000 % 10 == x)z += 1;
if (n / 100000 % 10 == x)z += 1;
else z += 0;
}
return z;
}
int main() {
int n, x, i = 0;
cin >> n >> x;
for (int j = 1; j <= n; j++) {
i += num(j, x);
}
cout << i;
}
解答:(Python3)
n,x = map(int,input().split())
cnt = 0
for i in range(1,n + 1):
cnt += str(i).count(str(x))
print(cnt)