问题描述
小明将养的一缸金鱼分5次出售:第一次卖出全部的一半加1/2条,第二次卖出余下的三分之一加1/3条,第三次卖出余下的四分之一加1/4条,第五次卖出余下的五分之一加1/5条, 最后卖出余下的11条,求出原来鱼缸中有多少条金鱼。
问题分析
假设第j次卖鱼前金鱼总数为x, 则第j次卖鱼后鱼缸中还剩下金鱼的条数为x-(x+1)/(j+1), 而且第四次卖鱼后鱼缸中剩下的金鱼条数为11.
而且 x+1 必然能整除 j+1
Code
# !/user/bin/python3
# -*- coding: utf-8 -*-
# @author: HHVic
# @desc: 出售金鱼
import time
# add timer to calculate the performance
# Basic performance
###############################################################
start = time.time()
if __name__=='__main__':
flag=0
i=23
while flag==0:
j=1 #j表示卖鱼的次数
x=i #x表示每次卖鱼的条数
while j<=4 and x>=11:
if (x+1)%(j+1)==0:
x-=(x+1)/(j+1)
else:
x=0
break
j+=1
if j==5 and x==11:
print('原来鱼缸中有%d条金鱼。'%i)
flag=1 #求出结果flag置为1,退出循环。
i+=2
end = time.time()
print("The Basic Runtime is {0}".format((end-start)))
结果:
原来鱼缸中有59条金鱼。
The Basic Runtime is 0.0009522438049316406
Process finished with exit code 0