наименьшее общее кратное?
Код | #include <iostream> #include <cmath> #include <algorithm> #include <functional> #include <vector>
template <typename T> T gcd (T m, T n) { while (n != T()) { m %= n; std::swap (m,n); } return m; }
template <typename T> T unit() { return T(1); }
template <typename Iter> typename Iter::value_type gcd_set (Iter begin, Iter end) { typedef typename Iter::value_type T; T val(unit<T>()); while (begin != end) val = gcd (val,*begin++); return val; }
template <typename Iter> typename Iter::value_type lcm_set (Iter begin, Iter end) { typedef typename Iter::value_type T; T mult (std::accumulate (begin, end, unit<T>(), std::multiplies<T>())); return std::abs (mult) / gcd_set (begin, end); }
int main() { std::vector<int> values = {2, 5}; int lcm = lcm_set (values.begin(), values.end()); if (1 <= lcm && lcm <= 300) std::cout << lcm << std::endl; }
|
|