鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 16(答题领鱼币)

  [复制链接]
发表于 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
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 19:54:52 | 显示全部楼层
本帖最后由 阿bang 于 2018-3-8 19:59 编辑
  1. Monkey_1 = 0
  2. answers = 0
  3. while True:
  4.         Monkey_1 += 1
  5.         if ((5 * Monkey_1 + 1) % 4) == 0 :
  6.                 Monkey_2 = (5 * Monkey_1 + 1) / 4
  7.         else:
  8.                 continue
  9.        
  10.         if ((5 * Monkey_2 + 1) % 4) == 0 :
  11.                 Monkey_3 = (5 * Monkey_2 + 1) / 4
  12.         else:
  13.                 continue
  14.        
  15.         if ((5 * Monkey_3 + 1) % 4) == 0 :
  16.                 Monkey_4 = (5 * Monkey_3 + 1) / 4
  17.         else:
  18.                 continue
  19.        
  20.         if ((5 * Monkey_4 + 1) % 4) == 0 :
  21.                 Monkey_5 = (5 * Monkey_4 + 1) / 4
  22.         else:
  23.                 continue
  24.        
  25.         Total = 5 * Monkey_5 + 1
  26.         print  Monkey_1,Monkey_2,Monkey_3,Monkey_4,Monkey_5,Total
  27.         answers += 1
  28.         if answers == 10:
  29.                 break
  30.        
复制代码

=====================
这题实际为求整数解,理论上有无数种解。上述为从小到大输出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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 12:20:08 From FishC Mobile | 显示全部楼层
瞅瞅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-23 14:12:08 | 显示全部楼层
??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-29 09:55:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-29 10:54:21 | 显示全部楼层
def test16():
    n = 5
    num = 6
    while n > 1:
        num = num*5 + 1
        n -= 1
    print(num)
test16()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 23:38:26 | 显示全部楼层
  1. result = 1
  2. for i in range(5):
  3.     result = 5*result+1
  4. 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-9 21:22:20 | 显示全部楼层
  1. '''
  2. 海滩上有一堆桃子,五只猴子来分。
  3. 第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
  4. 第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份
  5. 第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
  6. '''
  7. pn=0
  8. while True:
  9.     pn=pn+4
  10.     print('Start try %d...'% pn)
  11.     sn=pn
  12.     for i in range(1,5):
  13.         #计算每次猴子拿之前的数量
  14.         sn=sn//4*5+1
  15.         if sn%4!=0:
  16.             break
  17.     if sn%4!=0:
  18.         continue
  19.     else:
  20.         #多计算一次,算出第一只猴子拿之前的数量
  21.         sn=sn//4*5+1
  22.         print(sn)
  23.         break


复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-20 10:41:46 | 显示全部楼层
  1. a=1
  2. while a:      
  3.     temp = a
  4.     if  (temp - 1) % 5 == 0 :#第一次分桃
  5.         b = (temp - 1) / 5
  6.         for i in range( 1,5 ):#后面四次分桃
  7.             if (b - 1) * 4 % 5 == 0:
  8.                 b = (b - 1)*4 / 5
  9.                 if b != 0:#第五次分桃不为0个
  10.                     print(a)
  11.                     a = -1 #得到一个结果,结束所有循环
  12.     a += 1      
  13.               
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-20 16:21:23 | 显示全部楼层
正确答案是多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-1 23:38:06 | 显示全部楼层
新手·ing 发表于 2017-4-2 12:25
@lumber2388779 @ooxx7788 @冬雪雪冬 @jerryxjr1220
来吧!

第五只猴子分完还应该多一个吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-2 16:59:46 | 显示全部楼层
学习下大佬的方案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-3 21:33:48 | 显示全部楼层
来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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天吃桃子的猴子是一样的算法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-11 22:27:10 | 显示全部楼层
  1. def fobi(n,k):
  2.     if n == 5 :
  3.         return 4 * k
  4.     else :
  5.         return (fobi(n+1,k) * 5 / 4 + 1)

  6. def check(x):
  7.     global flag
  8.     for n in range(0,6) :
  9.         if fobi(n,k) % 1 == 0 : #fobi(n,k)为整型
  10.             flag = 0
  11.         else :
  12.             flag = 1
  13.             break
  14. flag = 1
  15. k = 1
  16. while flag == 1 :
  17.     for n in range(0,6):
  18.         check(fobi(n,k))
  19.     if flag == 1 :
  20.         k += 1
  21.     else :
  22.         break

  23. print('最少有:%d' %fobi(0,k))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-8 11:15:55 | 显示全部楼层
不要怂,正面怼

#假设有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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 07:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表