第一次正式参加常规赛想想有些小激动的呢
然后第一题就被hack了 心痛 _(:зゝ∠)_
tle点在于越界 因此结束循环条件从乘变为除 done
//等等 这题没过总评 让我静静........
//改天再来改吧.......
#include <cstdio> int main() { long long l, r, k; scanf("%I64d%I64d%I64d", &l, &r, &k); if(k > r) puts("-1"); else{ long long i = 1; for(; r / i >= k; i *= k){ if(i >= l) printf("%I64d ", i); } printf("%I64d ", i); } return 0; }
----------------------------------------------Updata----------------------------------------------------
k > r 时 如果l == 1 则要输出一个1
另外 如果过程中直接跳过这个循环 是要输出一个-1的
#include <cstdio> int main() { long long l, r, k; scanf("%I64d%I64d%I64d", &l, &r, &k); if(k > r){ if(l > 1) puts("-1"); else puts("1"); } else{ long long i = 1; for(; r / i >= k; i *= k){ if(i >= l) printf("%I64d ", i); } if(i >= l) printf("%I64d ", i); else puts("-1"); } return 0; }