This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "math/number-theory/enumerate-quotients.hpp"
整数 $n$ が与えられたとき, $n$ の商 ($\lfloor \frac n i \rfloor$) ($1 \leq i \leq n$) の値と対応する区間を列挙します。
template <typename T>
vector< tuple< T, T, T > > enumerate_quotients(T n)
戻り値の各要素を $\{q, l, r\}$ としたとき、$l \leq i \lt r$ を満たす整数 $i$ の商($\lfloor \frac n i \rfloor$) が $q$ であることを意味します。$q$ の昇順で返します。
template <typename T>
vector<tuple<T, T, T> > enumerate_quotients(T n) {
T l = 1;
vector<tuple<T, T, T> > quotients;
while (l <= n) {
T q = n / l;
T r = n / q + 1;
quotients.emplace_back(q, l, r);
l = r;
}
reverse(quotients.begin(), quotients.end());
return quotients;
}
#line 1 "math/number-theory/enumerate-quotients.hpp"
template <typename T>
vector<tuple<T, T, T> > enumerate_quotients(T n) {
T l = 1;
vector<tuple<T, T, T> > quotients;
while (l <= n) {
T q = n / l;
T r = n / q + 1;
quotients.emplace_back(q, l, r);
l = r;
}
reverse(quotients.begin(), quotients.end());
return quotients;
}