首页 > 试题广场 >

记数问题

[编程题]记数问题
  • 热度指数:33336 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}试计算在区间 1n\left(1 \leqq n \leqq 10^6\right) 的所有整数中,数字 x0 \leqq x \leqq 9)共出现了多少次。

输入描述:
\hspace{15pt}在一行中输入两个整数 n,x,用空格隔开。其中 n 表示区间上界,x 表示要统计的数字。


输出描述:
\hspace{15pt}输出一个整数,表示数字 x 在区间 [1,n] 中出现的次数。
示例1

输入

11 1

输出

4

说明

在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。
示例2

输入

20 1

输出

12

说明

在区间 120 中,数字 1 出现在 1,10,11,12,13,14,15,16,17,18,19 中,共 12 次。

备注:

n,x = map(int,input().split())
a = ""
for i in range(1,n+1):
    a = a + str(i)
print(a.count(str(x)))
发表于 2025-11-23 19:57:05 回复(0)
n,x = input().split()
n = int(n)
t = []
for i in range(1,n+1):
    t.append(i)
t = list("".join(map(str,t)))
c = 0
for j in t:
    if x is j:
        c += 1
print(c)

发表于 2025-11-11 19:47:56 回复(0)
n, x = map(int, input().split())
c = 0
for i in range(n):
    c += str(i + 1).count(str(x))
print(c)

发表于 2025-11-04 11:34:02 回复(0)
import sys

for line in sys.stdin:
    n,x = line.strip().split()
    cnt = 0
    for i in range(1,int(n)+1):
        if x in str(i):
            cnt += str(i).count(x)
    print(cnt)

发表于 2025-10-28 23:52:40 回复(0)
n,x=map(int,input().split())
count=0
for i in range(1,n+1):
    count+=str(i).count(str(x))
print(count)
发表于 2025-09-26 09:25:59 回复(0)
# 使用数学的方法
n, x = map(int, input().split())
# 1 先判断n的数量级:len(str(n))
a = str(n)
len_n = len(a)
# 2 判断个位一共出现了多少次该数字
cnt = []
for i in range(len_n):
    if int(a[-1]) > x:
        cnt_1 =int(n / (10 ** (i+1))) + 1
    else:
        cnt_1 = int(n / (10 ** (i+1)))
   
    # 在考虑两种特殊情况
    # 1 x == 0
    if x == 0:
        cnt_1 = cnt_1 - 1
    # 计算出现总数
    cnt_1 = cnt_1 * (10 **i)
    # 2 int(a[-1]) == x
    if int(a[-1]) == x:
        cnt_1 = cnt_1 + n % (10 ** i) + 1
    cnt.append(cnt_1)
    a = a[0: -1]
print(sum(cnt))

发表于 2025-07-25 10:00:09 回复(0)
n,x = map(int, input().split())
times = 0
for i in range(1, n + 1, 1):
    while i > 0:
        if i % 10 == x:
            times += 1
        i //= 10
print(times)

发表于 2025-07-25 02:32:30 回复(0)
n, x = map(int, input().split())

x = str(x)
count = 0

for i in range (1, n+1):
    count += str(i).count(x)

print(count)
发表于 2025-07-15 06:13:26 回复(0)
(lambda n,k:print(''.join([str(i) for i in range(1,int(n)+1)]).count(k)))(*input().split())
发表于 2025-07-10 22:50:30 回复(0)
使用join()函数将列表中的所有元素合并为一个字符串
n,x=map(int,input().split())
a = [str(i) for i in range(1,n+1)]
b = "".join(a)
print(b.count(str(x)))


编辑于 2024-02-06 14:07:39 回复(0)
这个效率高
import re

n, x = map(int, input().split())
myList = [i for i in range(1, n + 1)]
print(len(re.findall(str(x), "".join(str(i) for i in myList))))

发表于 2022-11-04 09:12:44 回复(0)