library2

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub goodstudyqaq/library2

:warning: math/integer-chunk.hpp

Code


/*
https://www.cnblogs.com/wyb-sen/p/14400359.html
*/

long long integer_chunk_max_floor(long long n, long long i) {
    // 整除分块, 返回最大的 i', 使得 n / i' =  n / i
    return n / (n / i);
}

long long integer_chunk_min_floor(long long n, long long i) {
    // 整除分块,返回最小的 i',使得 n / i' = n / i
    long long q = n / i;
    return (n / (q + 1)) + 1;
}

long long integer_chunk_max_ceil(long long n, long long i) {
    // 整除分块,返回最大的 i' 使得向上取整相等: ceil(n / i') = ceil(n / i)
    if (i == n) return n;
    long long t = (n + i - 1) / i;
    return (n + t - 2) / (t - 1) - 1;
}

long long integer_chunk_min_ceil(long long n, long long i) {
    // 整除分块,返回最小的 i' 使得向上取整相等: ceil(n / i') = ceil(n / i)
    long long t = (n + i - 1) / i + 1;
    return (n + t - 2) / (t - 1);
}
#line 1 "math/integer-chunk.hpp"

/*
https://www.cnblogs.com/wyb-sen/p/14400359.html
*/

long long integer_chunk_max_floor(long long n, long long i) {
    // 整除分块, 返回最大的 i', 使得 n / i' =  n / i
    return n / (n / i);
}

long long integer_chunk_min_floor(long long n, long long i) {
    // 整除分块,返回最小的 i',使得 n / i' = n / i
    long long q = n / i;
    return (n / (q + 1)) + 1;
}

long long integer_chunk_max_ceil(long long n, long long i) {
    // 整除分块,返回最大的 i' 使得向上取整相等: ceil(n / i') = ceil(n / i)
    if (i == n) return n;
    long long t = (n + i - 1) / i;
    return (n + t - 2) / (t - 1) - 1;
}

long long integer_chunk_min_ceil(long long n, long long i) {
    // 整除分块,返回最小的 i' 使得向上取整相等: ceil(n / i') = ceil(n / i)
    long long t = (n + i - 1) / i + 1;
    return (n + t - 2) / (t - 1);
}
Back to top page