70分求助
查看原帖
70分求助
1393571
封禁用户楼主2024/10/10 18:07
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>

using namespace std;
bool inRange(long long x, long long a, long long b) {
    return x >= a && x <= b;
}
int main() {
    long long a, b, k;
    cin >> a >> b >> k;
    vector<long long> squares, cubes;
    long long sqrt_a = ceil(sqrt(a));
    long long sqrt_b = floor(sqrt(b));
    for (long long x = sqrt_a; x <= sqrt_b; ++x) {
        long long square = x * x;
        squares.push_back(square);
    }
    long long cbrt_a = ceil(cbrt(a));
    long long cbrt_b = floor(cbrt(b));
    for (long long y = cbrt_a; y <= cbrt_b; ++y) {
        long long cube = y * y * y;
        cubes.push_back(cube);
    }
    long long count = 0;
    for (long long square : squares) {
        auto lower = lower_bound(cubes.begin(), cubes.end(), square - k);
        auto upper = upper_bound(cubes.begin(), cubes.end(), square + k);
        count += distance(lower, upper);
    }
    cout << count << endl;

    return 0;
}

TLE 了

2024/10/10 18:07
加载中...