大致意思就是在 l 到 r 中输出所有 k 的次方数。刚开始不看题以为是 k 的倍数(⊙o⊙)…
贴代码 15ms
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
int main()
{
ll l,r,k;
scanf("%I64d%I64d%I64d",&l,&r,&k);
ll f=l;
int t=0;
ll first=1;
while(first<l)
{
f/=k;
if(first>r/k)
{
printf("-1\n");
return 0;
}
first*=k;
}
if(first>r)
{
printf("-1\n");
return 0;
}
for(ll i=first;i<=r;i*=k)
{
printf("%I64d ",i);
if(i>r/k)
break;
}
return 0;
}