前言
- 问题:给三个整数l, r, k, 输出[l, r]范围内所有的k的乘方
坑:
- 用pow超时
- ans *= k超过 long long!(再乘可能会超过r,也就是超过)
#include <iostream>
#define ll long long
using namespace std;
int main() {
ll l, r, k, ans;
while (cin >> l >> r >> k) {
ans = 1;
bool flag = true;
while (true) {
if (ans >= l && ans <= r) {
cout << ans << " ";
flag = false;
}
if (ans > r / k) // 少做最后一次乘法就不会爆
break;
ans *= k;
}
if (flag)
cout << -1 << endl;
}
}