社区讨论

daolao 求调,#9 TLE 92 pts

P2699【数学 1】小浩的幂次运算参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m6assxfi
此快照首次捕获于
2025/01/24 21:29
去年
此快照最后确认于
2025/01/25 10:07
去年
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
int l, r, w;
inline int qpow(int a, int b) { int ans = 1; while (b > 0) { if (b & 1) ans *= a; a *= a; b >>= 1; } return ans; }
inline int log_floor(int x, int y) { if (y < x) return 0; int res = 0; while (y / x) y /= x, res++; return res; }
inline int log_ceil(int x, int y) { int tmp = log_floor(x, y); return tmp + !(qpow(x, tmp) == y); }
inline int rint() {
    register int k = 0, f = 0; register char c = getchar();
    while (!isdigit(c)) { if (c == '-') f ^= -1; c = getchar(); }
    while (isdigit(c)) { k = (k << 1) + (k << 3) + (c ^ '0'); c = getchar(); }
    return f ? -k : k;
}
signed main(signed argc, char* argv[]) {
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    l = rint(), r = rint(), w = rint();
    int x = log_ceil(w, l), y = log_floor(w, r);
    if (x > y) return cout << "-1\n", 0;
    for (int i = x; i <= y; i++) cout << qpow(w, i) << " \n"[i == y];
    return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...