首页 > 试题广场 >

记数问题

[编程题]记数问题
  • 热度指数: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 次。

备注:

dog sun的 , 第十组输入数据有bug
发表于 2025-08-10 11:00:59 回复(0)
n,x = map(int,input().split(" "))
s = 0
for i in range(1,n+1):
    if str(x) in str(i):
        s += str(i).count(str(x))
print(s)
发表于 2025-07-17 10:43:56 回复(0)
n,x = map(int,(input().split()))
s = 0
for i in range(1,n+1):
    t = str(i)
    s += t.count(str(x))
print(s)

发表于 2022-07-25 13:05:21 回复(0)
n, x = map(int, input().split())
num_list = [i for i in range(1, n+1)]
res = 0

def countNum(num, x):
    count = 0
    while num > 0:
        if num%10 == x:
            count += 1
        num = num // 10
    return count

for item in num_list:
    result = countNum(item, x)
    res += result
print(res)

发表于 2022-07-08 12:14:34 回复(0)
n, x = input().split()
c = 0
for i in range(1, int(n)+1):
    c += str(i).count(x)
print(c)

发表于 2022-03-27 18:08:20 回复(0)
凭我朴素的直觉,写了一个非常低效的答案,当反面例子看吧:
n,x = map(int,input().split())
t = 0
for i in range(1,n+1):
    for j in range(len(str(i))):
        if str(x) in str(i)[j]:
# 如果x在i的第j个字符出现,那t计数一次
            t += 1
        else:
            t = t
print (t)


#  会报错
# 运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。

参考了讨论区“我有一只猫”大佬的方法:
m,n=map(int,input().split())
cc=''
for i in range(1,m+1):
    i=str(i)
    cc+=i
    # 意思是把所有数字的文本先加在一起,组成一个名为cc的长文本,
con=cc.count(str(n))
# 再在cc之中用count,数n这个数字出现的次数
# 妙哇!
print(con)


发表于 2022-03-04 19:51:20 回复(1)
m,n=map(int,input().split())
cc=''
for i in range(1,m+1):
    i=str(i)
    cc+=i
con=cc.count(str(n))
print(con)
发表于 2022-03-01 17:56:58 回复(0)
while True:
    try:
        n,x = map(int, input().split())
        count = 0
        for i in list(range(1, n+1, 1)):
            count = count + str(i).count(str(x))
        print(count)
    except:
        break
发表于 2022-02-26 18:36:30 回复(0)