tianyafenger 发表于 2020-4-15 10:53:12

求大神帮忙?


爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
自己写的
n=1
flag=0
a=(n/7)
b=((n-1)/2)
c=((n-2)/3)
d=((n-4)/5)
e=((n-5)/6)
a1=int(a)
b1=int(b)
c1=int(c)
d1=int(d)
e1=int(e)
while n<=200:
    if a==a1 and b==b1 and c==c1 and d==d1 and e==e1:
       flag=1
    else:
      a=((n+1)/7)#数字每次加1去试
      b=((n-1+1)/2)
      c=((n-2+1)/3)
      d=((n-4+1)/5)
      e=((n-5+1)/6)
    n+=1
    if flag==1:
      print (a)
就是想用除法不想用余数

qiuyouzhi 发表于 2020-4-15 11:06:25

So?
你的问题是?
而且,用余数的核心逻辑只需要一行代码

tianyafenger 发表于 2020-4-15 11:10:40

这个代码运行出不了结果

tianyafenger 发表于 2020-4-15 11:11:47

qiuyouzhi 发表于 2020-4-15 11:06
So?
你的问题是?
而且,用余数的核心逻辑只需要一行代码

我写的这个有问题,没有答案,不知道哪错了

岚冰1234 发表于 2020-4-15 11:11:48

你的意思是想自己写个余数的算法?

tianyafenger 发表于 2020-4-15 11:12:55

岚冰1234 发表于 2020-4-15 11:11
你的意思是想自己写个余数的算法?

想问一下我写的这个为什么,也不报错,就是没答案

qiuyouzhi 发表于 2020-4-15 11:19:39

tianyafenger 发表于 2020-4-15 11:12
想问一下我写的这个为什么,也不报错,就是没答案

for i in range(200):
    if i % 2 and i % 3 == 2 and i % 5 == 4 and i % 6 == 5 and not i % 7:
      print(i)
为啥不用取余呢?

tianyafenger 发表于 2020-4-15 11:25:11

qiuyouzhi 发表于 2020-4-15 11:19
为啥不用取余呢?

第一张开始用的除法写的,老是有问题,取余的这个我也写了一遍没问题,心里想知道除法这个到底错在哪了?

qiuyouzhi 发表于 2020-4-15 11:27:04

tianyafenger 发表于 2020-4-15 11:25
第一张开始用的除法写的,老是有问题,取余的这个我也写了一遍没问题,心里想知道除法这个到底错在哪了?

你那个a,b,c,d,e,用n-1/2,咋可能和a1这些相等呢。。。
我很想听听你的思路

tianyafenger 发表于 2020-4-15 11:38:51

qiuyouzhi 发表于 2020-4-15 11:27
你那个a,b,c,d,e,用n-1/2,咋可能和a1这些相等呢。。。
我很想听听你的思路

我想的是,n每次去加1,这样去试商

qiuyouzhi 发表于 2020-4-15 11:40:28

tianyafenger 发表于 2020-4-15 11:38
我想的是,n每次去加1,这样去试商

你试商有什么用?
题目给你的信息是余数,
你试商。。。

tianyafenger 发表于 2020-4-15 11:44:42

qiuyouzhi 发表于 2020-4-15 11:40
你试商有什么用?
题目给你的信息是余数,
你试商。。。

a的结果是整数(如果商有余数说明不满足题意)
a1的结果是整数说明满足题意
b和b1也一样

岚冰1234 发表于 2020-4-15 11:45:29

因为你abcde在循环体内重新赋值了

而a1,b1,c1这些永远等于0,判断条件永远不成立,当循环次数到了后,就没有结果啊

tianyafenger 发表于 2020-4-15 11:45:47

tianyafenger 发表于 2020-4-15 11:44
a的结果是整数(如果商有余数说明不满足题意)
a1的结果是整数说明满足题意
b和b1也一样

意思就是a不再有余数了,整除了那么就知道结果了

tianyafenger 发表于 2020-4-15 11:47:53

岚冰1234 发表于 2020-4-15 11:45
因为你abcde在循环体内重新赋值了

而a1,b1,c1这些永远等于0,判断条件永远不成立,当循环次数到了后,就 ...

因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方式来“委曲求全”。
我看见老师原来也是这样的写的

tianyafenger 发表于 2020-4-15 11:48:55

tianyafenger 发表于 2020-4-15 11:47
因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方 ...

那怎么改呀

tianyafenger 发表于 2020-4-15 11:57:09

tianyafenger 发表于 2020-4-15 11:47
因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方 ...

你说的对,循环里负赋值导致不行的!
我又试了一下看看
可以了谢谢!!
n=1
flag=0
a=(n/7)
b=((n-1)/2)
c=((n-2)/3)
d=((n-4)/5)
e=((n-5)/6)
a1=int(a)
b1=int(b)
c1=int(c)
d1=int(d)
e1=int(e)
while n<=200:
    if a==a1 and b==b1 and c==c1 and d==d1 and e==e1:
       flag=1
    else:
      a=((n+1)/7)#数字每次加1去试
      b=((n-1+1)/2)
      c=((n-2+1)/3)
      d=((n-4+1)/5)
      e=((n-5+1)/6)
      a1=int(a)
      b1=int(b)
      c1=int(c)
      d1=int(d)
      e1=int(e)
    n+=1
if flag==1:
    print (7*a)

tianyafenger 发表于 2020-4-15 11:59:38

岚冰1234 发表于 2020-4-15 11:45
因为你abcde在循环体内重新赋值了

而a1,b1,c1这些永远等于0,判断条件永远不成立,当循环次数到了后,就 ...

tianyafenger 发表于 2020-4-15 11:47
因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 ==
你说的对,循环里负赋值导致不行的!
我又试了一下看看
可以了谢谢!!
n=1
flag=0
a=(n/7)
b=((n-1)/2)
c=((n-2)/3)
d=((n-4)/5)
e=((n-5)/6)
a1=int(a)
b1=int(b)
c1=int(c)
d1=int(d)
e1=int(e)
while n<=200:
    if a==a1 and b==b1 and c==c1 and d==d1 and e==e1:
       flag=1
    else:
      a=((n+1)/7)#数字每次加1去试
      b=((n-1+1)/2)
      c=((n-2+1)/3)
      d=((n-4+1)/5)
      e=((n-5+1)/6)
      a1=int(a)
      b1=int(b)
      c1=int(c)
      d1=int(d)
      e1=int(e)
    n+=1
if flag==1:
    print (7*a)
页: [1]
查看完整版本: 求大神帮忙?