首页 > 编程知识 正文

力扣算法题python(50道简单python函数题)

时间:2023-05-03 16:05:18 阅读:73695 作者:1948

今天在算法问题上进行改进,进行共享

果园里有一堆苹果,n(1<; n )9)熊分开。 第一只熊把这堆苹果平均分成n个,增加了一个。 那个扔了很多的一个,拿了一个。 第二只熊把剩下的苹果又平均分成n个,又多了一个。 那个扔了同样多的人,拿了一个。 第三只、第四只到第n只一样,问果园里本来最少有多少个苹果。

试一下再往下看。 (当N=5时,答案是3121。

首先,让我们简要分析一下这个主题。 假设第k只熊取完之后,还有m个苹果。 从主题意义上说,如果m除以n的馀数正好是1,那么第k 1只熊就能得到(M-1 )/N个苹果,在第k只熊摘之前就有Mn/(n-1 )个苹果。 换句话说,这堆苹果符合一个性质,每只熊,前面摘下的苹果数除以n剩下1,摘下的苹果数除以(N-1 ) *。

这样想的话,从最后一只熊向前倾倒总苹果数num,最后一只熊摘了n部苹果中的一部,所以剩下的苹果一定是N-1的倍数,所以num初始值一定是N-1的倍数。

将num初始值设为N-1后,反过来开始按。 前一只熊摘下前的苹果数量为num=numnum/(N-1 ) 1,判断这个数字是否能被n-1整除,如果可能,继续向前倾倒,如果不可能,表示num不满足条件,num初始值为2(n-1 )

让我把“Python算法问题”分成苹果

如果你再仔细分析一下这个主题,把每只熊摘前的苹果数量排在一个序列里

让我把“Python算法问题”分成苹果

根据前面的分析,倒数第k次摘之前的苹果数量是倒数第k 1次摘之前的苹果丢掉一个再摘一个之后剩下的,所以有关系式:

让我把“Python算法问题”分成苹果

同时最后一只熊摘前的苹果数量符合条件:

让我把“Python算法问题”分成苹果

这里|表示可以整除。 因为需要舍弃一个进行n分割。 改变表达方法就可以写

让我把“Python算法问题”分成苹果

综合起来,所有条件可以描述如下

让我把“Python算法问题”分成苹果

你有感觉熟悉吗? 这不是高中数列的递推公式吗? 求出一般项的公式就结束了。 根据上面的递归公式,如下所示

让我把“Python算法问题”分成苹果

最后得到

让我把“Python算法问题”分成苹果

由于xN必须是整数,因此m的可能值不是任意的,而是有一定的限制。 实际上,要使xN为整数,m的取值正好可以去掉公式的分母即可,最终得到

让我把“Python算法问题”分成苹果

其中

让我把“Python算法问题”分成苹果

这样,求出实际满足条件的所有苹果的数量,如果是最小数量,设定t=1就可以了。 最终得到

让我把“Python算法问题”分成苹果

这样代码就非常简单了。

让我把“Python算法问题”分成苹果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。