将一个数平均分成N等份

有这样一个场景,我有一个已知数字,还已知分成N份。但是要分的平局一些。如果数字为120,要分为9份。那么可以分成8个14和,1个8。但显然这不是最平局方法。最平局的方式应该是3个14,6个13。

下面给出代码,拿到最平局的分法。原理就是先整除,然后再将余数分配到每一个上,比如120%9=3。120//9=13。那么就是3个(13+1),其余的都是13。

cpp 复制代码
#include <iostream>
#include <vector>

std::vector<int> splitIntoEqualParts(int number, int N) {
    std::vector<int> result(N, number / N); // 初始化每份为平均值
    int remainder = number % N; // 计算余数

    // 将余数逐个分配给每一份
    for (int i = 0; i < remainder; ++i) {
        result[i] += 1;
    }

    return result;
}

int main() {
    int number = 120;
    int N = 9;

    std::vector<int> parts = splitIntoEqualParts(number, N);

    std::cout << number << " 分成 " << N << " 份,每份为:";
    for (int part : parts) {
        std::cout << part << " ";
    }
    std::cout << std::endl;

    return 0;
}
cpp 复制代码
120 分成 9 份,每份为:14 14 14 13 13 13 13 13 13 

----------------------------------分割线---------------------------------------------------------------------------

在此基础之上,我想拿到每一份的索引,比如0-14,14-28,28-42 42-55 55-68等等

首先计算strat 如果当前份数小于余数,那么说明余数还没分配完。用上面的例子话第0份的长度为14(120/9 + 1),start值为 0 *14。end为start + 步长

如果当前份数大于等于余数,如果是第3份,那么余数已经分配完了,那么这一份的长度为13 (120/9)。start为 3*13 +3(余数) end为 start+13

相关推荐
徐小夕1 小时前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
Robert--cao1 小时前
移动底盘与机械臂联合规划:开源算法与工程实现
算法
小豆庄2 小时前
Mac 上给视频人脸打码:本地工具的依赖、追踪与推理管线
算法·视觉检测·视频·敏捷流程·纹理贴图
星夜离尘562 小时前
MATLAB 工程实验:从相邻块均值手写重叠 Allan 偏差,数清有效项
算法·matlab·均值算法
careathers3 小时前
【数据结构】从堆到 PriorityQueue:手写一个优先级队列
数据结构
y1su5 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划
residual_fan5 小时前
船用柴油机动态机动工况故障诊断:控制感知仿射网络(CAAN)的技术实现
人工智能·算法·数据挖掘·数据分析
syagain_zsx6 小时前
BRpc 二次封装:Channel 管理、服务管理与回调工厂
c++·学习·程序人生·rpc·谷歌
其实防守也摸鱼6 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
蓝悦无人机6 小时前
《Planning algorithms》读书笔记——第8章 反馈运动规划
算法·读书笔记·反馈运动规划