Underwood 发表于 2021-2-26 11:02:42

小白的程序算不出来011的那道数学题

steps = 7
i = 1
FIND = False

while i < 100:
    if (steps // 2)*2 + (steps % 2) == (steps // 3)*3 + (steps % 3) == (steps // 5)*5 + (steps % 5) == (steps // 6)*6 + (steps % 6) == (steps % 7)*7:
   # 请在此处填写需要满足的条件 #:
      FIND = True
      break
    else:
      steps = steps + 7
      # 请在此处填写正确的代码 #
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')



不知道哪一步出错了,求大佬指点

jackz007 发表于 2021-2-26 11:23:34

step = 7
i = 1
FIND = False
while i < 100:
    if step % 2 == 1 and step % 3 == 2 and step % 5 == 4 and step % 6 == 5:
      FIND = True
      break
    else:
      step = step + 7
    i = i + 1
else:
    print('在程序限定的范围内找不到答案!')
if FIND == True:
    print('阶梯数是:', step)

Peteryo01223 发表于 2021-2-26 11:29:03

本帖最后由 Peteryo01223 于 2021-2-26 11:44 编辑

楼主,你写的条件语句,根本,无意义。
if (steps // 2)*2 + (steps % 2) == (steps // 3)*3 + (steps % 3) == (steps // 5)*5 + (steps % 5) == (steps // 6)*6 + (steps % 6) == (steps % 7)*7
你实际上在表述:

[*]一个数,把它用2地板除,然后乘2回来,再加上除以2的余数,是它本身;
[*]一个数,把它用3地板除,然后乘3回来,再加上除以3的余数,是它本身;
[*]一个数,把它用5地板除,然后乘5回来,再加上除以5的余数,是它本身;
[*]一个数,把它用6地板除,然后乘6回来,再加上除以6的余数,是它本身;
[*]一个数,可被7整除。

前四句话,都是废话(无意冒犯,哈)。最后一句,有点儿用,但不足以算出结果。条件,在原地转圈,所以算不出来。(jackz007 是非常NB的导师哈,咱们都跟他学,就对了。我就是“抛砖引玉”,你要多多问他。)

jackz007 发表于 2021-2-26 11:29:22

find = False
for step in range(7 , 700 , 7):
    if step % 2 == 1 and step % 3 == 2 and step % 5 == 4 and step % 6 == 5:
      print('阶梯数是:' , step)
      find = True
if not find:
    print('指定范围找不到答案!')

Peteryo01223 发表于 2021-2-26 11:32:38

jackz007 发表于 2021-2-26 11:29


漂亮!

Underwood 发表于 2021-2-26 11:45:25

jackz007 发表于 2021-2-26 11:29


谢谢大佬给给出了一种更简洁的思路

Peteryo01223 发表于 2021-2-26 11:49:16

Underwood 发表于 2021-2-26 11:45
谢谢大佬给给出了一种更简洁的思路

一定要多跟 007 学。你给我点赞,我是不舒服的,我都是从零基础开始,跟他一点点问的,纯属“拾人牙慧”。以后,他回答了,就给他“最佳”哈。千万千万。谢谢
页: [1]
查看完整版本: 小白的程序算不出来011的那道数学题