将数字拆分为总和部分

2024-03-07

有没有一种有效的算法可以将数字分成N分段,以便数字之和等于原始数字,并具有最小基数?例如,如果我想将 50 分成 7 个小节,并且最小基数为 2,我可以这样做10,5,8,2,3,5,17(以及任何其他数量的组合)。我想将数字保留为整数,并且相对随机,但我不确定如何有效地生成总和等于原始值且不包含低于给定最小值的数字。有什么建议么?

编辑-只是为了复制/粘贴我的评论,整数不必是唯一的,但我想避免每次都使用相同的大小(例如 50 分成 10 个相同大小)。


这是一个算法:

  1. Divide N by m where N是你的号码并且m是小节的数量。
  2. 将结果向下舍入到最接近的值,并将该值分配给所有小节。
  3. 向每个小节添加 1,直到值总计为N。此时如果N是 50 岁并且m是 7,你会有 8, 7, 7, 7, 7, 7, 7
  4. 从 0 迭代到m-1,步进2,并在之间添加一个随机数-(currentValue-base) and currentValue-base。将该数字的倒数添加到其相邻的存储桶中。如果您有奇数个存储桶,则在最后一个存储桶上,不要将该数字的倒数添加到其相邻的存储桶中,而是以类似于上面的步骤 2 和 3 的分布式方式将其添加到所有其他存储桶中。

表现: 步骤 1 是O(1),步骤 2、3 和 4 是O(m),所以总体来说是O(m).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数字拆分为总和部分 的相关文章

随机推荐

  • java中的时间连续减少,格式为HH:MM:SS

    我有一个在项目中实施投标系统的方法 在服务器上的拍卖表中 我有一个用于开始时间和结束时间的字段 我正在做的是 当用户搜索时 他当然只会看到拍卖仍在进行中的物品 当用户点击该商品时 他会被带到一个可以出价的页面 在那里我得到开始时间和结束时间
  • 从整个数据框中删除重复值

    我有一个 Pandas DataFrame 如下 data pd DataFrame A 1 2 3 1 23 3 76 2 45 76 B 12 56 22 45 1 3 98 79 77 67 为了从数据框中删除重复的值 我已经这样做了
  • docker compose 容器内的 SSH 代理转发

    Could not open a connection to your authentication agent 我正在关注安装方法 SSH AUTH SOCK作为一个卷 https gist github com d11wtq 86995
  • Outlook 2003 不导入 .ics 日历,而 Outlook 2007 则可以

    我有一个使用 PHP 手动创建的 ics 文件 如下所示 BEGIN VCALENDAR PRODID Microsoft Corporation Outlook 11 0 MIMEDIR EN VERSION 2 0 METHOD PUB
  • 如何等待一个元素从 DOM 中移除?

    每当我尝试等待从量角器测试正在测试的网页上的当前 DOM 树中删除 DOM 元素时 我都会遇到此问题 当我尝试等待 DOM 元素通过 user2912739 在另一个线程中提供的这项好技术隐藏时 我已经掌握了它 var el element
  • Z3 支持非线性算术

    我知道 Z3 对非线性算术有一些支持 但想知道扩展到什么范围 是否可以指定支持和不支持 或可能超时 哪些类别的非线性算术 提前了解这些将帮助我尽早放弃我的任务 似乎不支持与电源相关的内容 如下所示 def pow2 x k Int k re
  • 如何在android应用程序中检查TCP套接字是否已连接

    我正在编写一个简短的测试应用程序来练习连接到服务器 该应用程序所做的就是从 editText 框中获取 IP 然后连接到服务器 看起来我可以连接到服务器 因为我能够将数据发送到服务器并让服务器打印它 我想添加一些错误检查 以在尝试向服务器发
  • navigator.geolocation.getCurrentPosition 在使用 React Native 的 iOS 模拟器中未触发

    在 Android 模拟器中 下面的代码工作正常 但在 iOS 中 它甚至不进入 navigator geolocation getCurrentPosition 我已经通过调试菜单更新了模拟器的自定义位置 但如果它甚至没有进入 navig
  • OSX 上可执行文件中的 Clang 链接 debug_info

    在 OSX 上 当您像这样链接来自多个目标文件的二进制文件时 clang g myfile cpp o myfile o clang myfile o shared o myfile dylib 它将生成一个 debug info部分 等
  • 命令行参数、cant 或两个变量

    include
  • 子串、切片、其他?

    根据MDN https developer mozilla org en US docs Web JavaScript Reference Global Objects String substr substr被认为是最终可能被弃用的遗留代
  • 如何从 microk8s 部署 Pod 访问网络中的主机

    我正在尝试从部署容器内访问位于另一台服务器 但在我的网络上 的主机 并且我正在使用microk8s 问题是在我所在的服务器上microk8s安装完毕后我可以轻松 ping 通它ping my network host qa local 但是
  • ngInject 和闭包编译器

    我尝试在高级模式下编译以下代码但未成功 description App configuration param angular routeProvider routeProvider constructor ngInject functio
  • R 中的向量化 IF 语句?

    x lt seq 0 1 10 0 1 y lt if x lt 5 1 else 2 这会发出警告 或自 R 版本 4 2 0 以来的错误 the condition has length gt 1 我想要if对每个案例进行操作 而不是对
  • 在方法中编写“return”的完美方式是什么

    我不喜欢有多个返回行的方法 所以我创建了一个带有字符串结果的返回值 并且在每种情况下我都写 result some 但是当我编写 try catch 机制时 我必须设置公共字符串结果 因为 如果我在 try 中返回结果 编译器将启动错误 并
  • 将 bool 属性绑定到 WinForm 的 BackColor 属性

    我有一个Form in my WinForm应用程序 其中包含TextBox和这个TextBox绑定到FirstName的财产Person Object public class Person string firstName public
  • 使用 spring-session 在微服务之间传播凭据的最佳方法

    我们使用的架构与中描述的架构非常相似spring io 上的这个很棒的指南 https spring io guides tutorials spring security and angular js the api gateway pa
  • YouTubePlayer:从纵向手机方向进入全屏可以轻松退出全屏

    如果您纵向握住手机并单击全屏按钮 YouTubePlayerView 如果您稍微摇动手机 它可以轻松让您返回 关闭全屏 官方 YouTube 应用程序正常工作 您在纵向握住手机的同时按下全屏按钮 如果您稍微摇晃它 它仍然保持全屏横向模式 如
  • 我可以在蛋白石中使用红宝石吗?

    There s opal irb and opal jquery and vienna但是有没有办法通过Opal直接在浏览器中使用gems呢 您可以添加宝石lib到 Opal 加载路径的路径 使用Opal use gem 常见的陷阱有 使用
  • 将数字拆分为总和部分

    有没有一种有效的算法可以将数字分成N分段 以便数字之和等于原始数字 并具有最小基数 例如 如果我想将 50 分成 7 个小节 并且最小基数为 2 我可以这样做10 5 8 2 3 5 17 以及任何其他数量的组合 我想将数字保留为整数 并且