假设给定一个比率容器,并且您想将比率简化为最低整数。
输入:
std::vector<int> v1 = { 10, 20 , 30, 40 };
Run Code Online (Sandbox Code Playgroud)
输出:
1,2,3,4
Run Code Online (Sandbox Code Playgroud)
如何解决n个大小的容器呢?我正在寻找通用解决方案,该解决方案适用于任何数量的元素和任何整数值。
反复应用于std::gcd向量中的所有数字以找到所有数字的gcd,然后将每个元素除以gcd。
const int gcd = std::reduce(v1.cbegin(), v1.cend(), 1, [](int a, int b) {
return std::gcd(a, b);
});
if (gcd != 1) {
for (int &elem : v1) {
elem /= gcd;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |