yooooly 发表于 2019-11-5 20:25:20

超时了 请问代码哪里能简化吗

n,x = map(int,input().split())
z= 0;
for i in range(1,n+1):
    a = int(i / 10000000)
    b = int(i % 10000000 / 1000000)
    c = int(i % 1000000 / 100000)
    d = int(i % 100000 / 10000)
    e = int(i % 10000 / 1000)
    f = int(i % 1000 / 100)
    g = int(i % 100 / 10)
    h = i % 10
    if a==x:
      z+=1
    if b==x:
      z+=1
    if c==x:
      z+=1
    if d==x:
      z+=1
    if e==x:
      z+=1
    if f==x:
      z+=1
    if g==x:
      z+=1
    if h==x:
      z+=1
    print(e,f,g,h)
   
print(z)
问题是题试计算在区间
11
1 到
nn
n的所有整数中,数字x(0≤x≤9) x(0 ≤ x ≤ 9)
x(0≤x≤9)共出现了多少次?

zltzlt 发表于 2019-11-5 20:32:59

麻烦把题目的原地址给出来?

yooooly 发表于 2019-11-5 20:37:46

zltzlt 发表于 2019-11-5 20:32
麻烦把题目的原地址给出来?

好的 https://www.luogu.org/problem/P1046

yooooly 发表于 2019-11-5 20:38:22

zltzlt 发表于 2019-11-5 20:32
麻烦把题目的原地址给出来?

https://www.luogu.org/problem/P1980

yooooly 发表于 2019-11-5 22:03:38

zltzlt 发表于 2019-11-5 20:32
麻烦把题目的原地址给出来?

回复网址要审核-.-

yooooly 发表于 2019-11-5 22:05:33

zltzlt 发表于 2019-11-5 20:32
麻烦把题目的原地址给出来?

题目描述
试计算在区间1 到n的所有整数中,数字x(0≤x≤9) 共出现了多少次?例如,在 1到11中,即在
1,2,3,4,5,6,7,8,9,10,11 中,数字1 出现了 4 次。

zltzlt 发表于 2019-11-5 22:07:37

本帖最后由 zltzlt 于 2019-11-5 22:09 编辑

yooooly 发表于 2019-11-5 22:05
题目描述
试计算在区间1 到n的所有整数中,数字x(0≤x≤9) 共出现了多少次?例如,在 1到11中,即在
...

n, x = map(int, input().split())
x = str(x)
n = str(list(range(n + 1)))
print(n.count(x))

yooooly 发表于 2019-11-5 22:20:26

zltzlt 发表于 2019-11-5 22:07


牛...牛逼看着我的代码流下了眼泪

zltzlt 发表于 2019-11-5 22:22:05

yooooly 发表于 2019-11-5 22:20
牛...牛逼看着我的代码流下了眼泪

这还不简单,直接转化成字符串处理

yooooly 发表于 2019-11-5 22:24:24

zltzlt 发表于 2019-11-5 22:22
这还不简单,直接转化成字符串处理

我没想到字符串也能用liststr(list())而且count(x)会把里11的两个1都记上吗

yooooly 发表于 2019-11-5 22:35:46

zltzlt 发表于 2019-11-5 22:22
这还不简单,直接转化成字符串处理

这里是把一开始的n变成了列表吗

yooooly 发表于 2019-11-5 22:38:06

zltzlt 发表于 2019-11-5 22:22
这还不简单,直接转化成字符串处理

如果把list()里的n+1变成别的东西好像就行不通了

zltzlt 发表于 2019-11-6 20:55:06

yooooly 发表于 2019-11-5 22:35
这里是把一开始的n变成了列表吗

是的。记得设置为最佳答案哦~
页: [1]
查看完整版本: 超时了 请问代码哪里能简化吗