z1446773686 发表于 2018-3-8 16:12:09

math = 1
for i in range(0,5):
    math *= 5
    math += 1
print(math)
number = 10000
while(number > 0):
    math = number
    for i in range(0,4):
      if math % 5 == 1:
            math -= 1
            math /= 5
    if math % 5 == 1:
      print(number)
    number -= 1
运行结果如下:
>>>
3906
7031
3906
781
>>>

阿bang 发表于 2018-3-8 19:54:52

本帖最后由 阿bang 于 2018-3-8 19:59 编辑

Monkey_1 = 0
answers = 0
while True:
        Monkey_1 += 1
        if ((5 * Monkey_1 + 1) % 4) == 0 :
                Monkey_2 = (5 * Monkey_1 + 1) / 4
        else:
                continue
       
        if ((5 * Monkey_2 + 1) % 4) == 0 :
                Monkey_3 = (5 * Monkey_2 + 1) / 4
        else:
                continue
       
        if ((5 * Monkey_3 + 1) % 4) == 0 :
                Monkey_4 = (5 * Monkey_3 + 1) / 4
        else:
                continue
       
        if ((5 * Monkey_4 + 1) % 4) == 0 :
                Monkey_5 = (5 * Monkey_4 + 1) / 4
        else:
                continue
       
        Total = 5 * Monkey_5 + 1
        printMonkey_1,Monkey_2,Monkey_3,Monkey_4,Monkey_5,Total
        answers += 1
        if answers == 10:
                break
       
=====================
这题实际为求整数解,理论上有无数种解。上述为从小到大输出10种答案,每一行为一个解,从左到右为第一,二。。五只猴子拿走的数量,以及桃子的原始总数。
输出为:
255 319 399 499 624 3121
511 639 799 999 1249 6246
767 959 1199 1499 1874 9371
1023 1279 1599 1999 2499 12496
1279 1599 1999 2499 3124 15621
1535 1919 2399 2999 3749 18746
1791 2239 2799 3499 4374 21871
2047 2559 3199 3999 4999 24996
2303 2879 3599 4499 5624 28121
2559 3199 3999 4999 6249 31246

Agoni 发表于 2018-3-9 12:20:08

瞅瞅

Charonnnnn 发表于 2018-3-23 14:12:08

??

Even_138 发表于 2018-3-29 09:55:39

{:5_91:}

HiaGhost 发表于 2018-3-29 10:54:21

def test16():
    n = 5
    num = 6
    while n > 1:
      num = num*5 + 1
      n -= 1
    print(num)
test16()

checkily 发表于 2018-3-29 23:38:26

result = 1
for i in range(5):
    result = 5*result+1
print('海滩上原来最少有%d个桃子' % result)

第五只猴子至少拿1个桃子,所以这时剩下:1*5+1=6
第四只猴子至少拿6个桃子,所以这时剩下:6*5+1=31
第三只猴子至少拿31个桃子,所以这时剩下:31*5+1=156
第二只猴子至少拿156个桃子,所以这时剩下:156*5+1=781
第一至只猴子少拿781个桃子,所以原来至少有:781*5+1=3906

z1446773686 发表于 2018-4-7 11:27:23

number = 10000

while(number > 0):
    math = number
    for i in range(0,4):
      if math % 5 == 1:
            math -= 1
            math /= 5
    if math % 5 == 1:
         if math % 5 == 1:
            print(number)
    number -= 1

tsembrace 发表于 2018-4-9 21:22:20

'''
海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份
第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
'''
pn=0
while True:
    pn=pn+4
    print('Start try %d...'% pn)
    sn=pn
    for i in range(1,5):
      #计算每次猴子拿之前的数量
      sn=sn//4*5+1
      if sn%4!=0:
            break
    if sn%4!=0:
      continue
    else:
      #多计算一次,算出第一只猴子拿之前的数量
      sn=sn//4*5+1
      print(sn)
      break


一水蓝天01 发表于 2018-4-20 10:41:46

a=1
while a:      
    temp = a
    if(temp - 1) % 5 == 0 :#第一次分桃
      b = (temp - 1) / 5
      for i in range( 1,5 ):#后面四次分桃
            if (b - 1) * 4 % 5 == 0:
                b = (b - 1)*4 / 5
                if b != 0:#第五次分桃不为0个
                  print(a)
                  a = -1 #得到一个结果,结束所有循环
    a += 1      
            

xxt 发表于 2018-4-20 16:21:23

正确答案是多少

天天学习$ 发表于 2018-5-1 23:32:04

def peach():
    peach_number = 1
    while True:
      count = 0
      peach_number += 1
      number = peach_number
      for i in range(0,5):
            if number % 5 == 1:
                count += 1   
            else:
                break
            number = number - number // 5
      if count == 5:
            print(peach_number)
            break

天天学习$ 发表于 2018-5-1 23:38:06

新手·ing 发表于 2017-4-2 12:25
@lumber2388779 @ooxx7788 @冬雪雪冬 @jerryxjr1220
来吧!

第五只猴子分完还应该多一个吧

jrro452 发表于 2018-5-2 16:59:46

学习下大佬的方案。

jrro452 发表于 2018-5-2 17:26:11

小白啥都不懂正面刚~~
n=0
i =5
while n !=1:
    s=i
    for x in range(4):
      if s%5==1:
            s-=int((s-1)/5)+1
      else:
            break
    if s%5==1:
      n+=1
    else:
      i+=1
print('原来最少的桃子数为:',i)

today0427 发表于 2018-5-3 21:33:48

来学习

BISHIQIUQIUI 发表于 2018-5-10 16:50:31

# 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
# 第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份.
# 第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

x=1
count=5
for n in range(5):
    print("第 %d 只猴子拿走了 %d 个桃子"%(count,x))
    x= 5*x + 1
    count-=1
print("最少共有%d个桃子"%x)
#和之前10天吃桃子的猴子是一样的算法

萧丹夜 发表于 2018-5-11 22:27:10

def fobi(n,k):
    if n == 5 :
      return 4 * k
    else :
      return (fobi(n+1,k) * 5 / 4 + 1)

def check(x):
    global flag
    for n in range(0,6) :
      if fobi(n,k) % 1 == 0 : #fobi(n,k)为整型
            flag = 0
      else :
            flag = 1
            break
flag = 1
k = 1
while flag == 1 :
    for n in range(0,6):
      check(fobi(n,k))
    if flag == 1 :
      k += 1
    else :
      break

print('最少有:%d' %fobi(0,k))

se7en2182 发表于 2018-5-12 10:00:00

    x = 4
    while True:
      y = x
      for i in range(5):
            y = y * 5 / 4 + 1
            if (y -1) % 5 != 0:
                break
      else:
            print('海滩上原来最少有%d个桃子'%int(y))
            break
      x += 4

aaaqqq2004 发表于 2018-6-8 11:15:55

不要怂,正面怼{:5_98:}

#假设有x个桃子
#第一次拿走 (x-1)*0.2剩下 (x-1)*0.8 设剩下为s
#第二次拿走 (s-1)*0.2剩下 (s-1)*0.8
#....
#最后一次拿走 1只      剩下4只
#最后最少桃子数量应该有6,而且桃子总数应该是能-1可以被5整除的一个数
#还有一个条件,至少要拿5次
for i in range(6,10000,5):
    s=(i-1)*0.8
    flag=True
    num=0#分了多少次
    while s>3 and int(s)==s:
      num=num+1
      s=(s-1)*0.8
    if num >=5:print (i,s)
页: 1 2 3 [4] 5 6 7
查看完整版本: Python:每日一题 16(答题领鱼币)