题目链接[http://codeforces.com/problemset/problem/614/A]
题意:输入三个数l、r、k(1 ≤ l ≤ r ≤ 1018, 2 ≤ k ≤ 109),输出所有的k的非负整数幂,并且幂的值在区间[l,r]内。
题解:很简单,暴力就可以,但是有一个坑点,在取幂的时候,值会溢出,这个时候需要特判一下,当(k^x)>(r/k)的时候就结束取幂。当然还有其他办法。
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int INF = INT_MAX; const int maxn = 1e5 + 15; LL l, r, k; int main () { scanf("%lld%lld%lld", &l, &r, &k); bool fg = true; LL t = 1; while(t <= r) { if(t >= l) { printf("%lld ", t); fg = false; } if(t > (r / k)) break; t *= k; } if(fg) printf("-1"); printf(" "); return 0; }