清晨腾雾 发表于 2021-5-25 08:48:52

求教我的代码哪有问题

给定两个非负整数x和y,如果某一整数等于x^i+y^j,其中整数i>= 0且j>=0,那么我们认为该整数是一个"精致"的数。返回值小于或等于n(n<=200)的所有精致的数组成的列表。

结果列表中每个值最多出现一次,同时请使用sorted保证结果唯一。

x=int(input('x:'))
y=int(input('y:'))
n=int(input('n:'))
i=0;j=0
a=[]
while True:
    if x**i+1>n:
      tupple(a)
      b=sorted(list(a))
      print(b)
      break
    while True:
      if x**i+y**j>n:
            break
      j+=1
      a.append(x**i+y**j)
    i+=1
    j=0

清晨腾雾 发表于 2021-5-25 09:04:21

tupple已改成tuple还是不行

qq1151985918 发表于 2021-5-25 09:39:06

本帖最后由 qq1151985918 于 2021-5-25 10:01 编辑

你那个是个死循环,跳不出来的
对照一下吧
x = int(input('x:'))
y = int(input('y:'))
n = int(input('n:'))

a = []

i = 0
while True:
    j = 0
    while True:
      num = x ** i + y ** j
      if num <= n:
            if num not in a:
                a.append(num)
                print(f"{x}^{i} + {y}^{j} = {num}")
      j += 1
      if num > n or j > n:
            break
      
    i += 1
    if x ** i > n or i > n:
      break
print(sorted(a))

清晨腾雾 发表于 2021-5-25 22:13:44

qq1151985918 发表于 2021-5-25 09:39
你那个是个死循环,跳不出来的
对照一下吧

白天上课有点忙,抱歉现在才回复,谢谢大佬了{:10_282:}
页: [1]
查看完整版本: 求教我的代码哪有问题