The Fun Of Algorithm - Day12 - 出售金鱼

问题描述

小明将养的一缸金鱼分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
上一篇:556. Next Greater Element III


下一篇:AtCoder Beginner Contest 045 题解