首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有效阵列编队数

有效阵列编队数
EN

Stack Overflow用户
提问于 2022-07-31 04:36:25
回答 1查看 31关注 0票数 0

如何着手解决这样的问题?

给出两个整数N和K,如果数组A满足以下条件,则称为有效:

A元素的

  1. 和恰好是N,

  1. ,K*Ai >= Ai+1

查找可以形成的有效数组的总数。因为答案可以是大号打印,所以它是模块化的10^9+7。

如果是N=100和K=3,那么可以形成的数组有: 100、24、76、1、5、22、72等等。

我想不出一个优化的解决方案,除了回溯方法,这可能是不可行的问题,这样的规模。我可能需要任何帮助来理解这个问题背后的逻辑。还有什么具体的算法可以帮助解决这类问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-31 04:59:53

也许这道题有数学答案,但我不知道,所以我会用编程方法来解决。

我称之为m是数组元素的数量,我们有:

A1 + A2 + A3 + A4 +.+ Am =N

A1 + K.A1 + K^2.A1 + K^3.A1 +…+K^(m-1).A1=N

呼叫A[1]x,我们有:

X+ xK + xK^2 + xK^3 +.+xK^(m-1)=N

1+K+ K^2 +.+ K^(m-1) = N/x

K+ K^2 + K^3 +.+ K^m = N/x *K

K^m -1= N/x.(K-1)

X=N/ (K-1)(K^m-1)

正如我们所看到的,需要找到两个变量:mxmx都是整数类型。因此,使用while循环和m从1开始直到边界N / [(K-1)(K^m-1)] < 1。如果除法N / [(K-1)(K^m-1)]是一个整数,则会找到一个正确的结果。只要数一数。

希望这是对的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73180699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档