题意:计算k的幂,并且要求其在 l 与 r 之间
坑点:本题有可能存在超出long long的情况
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long LL;
LL l,r,k,power;
int main()
{
int i,flag;
int a ,b;
while (~scanf("%I64d %I64d %I64d",&l,&r,&k))
{
flag = 0;
/*a = log(l)/log(k);
b = log(r)/log(k);
//cout << a << endl << b <<endl;
if(a==b)
{
power = pow(k,a);
if(power <= r && power>= l)
{
cout << power << endl;
}
else
cout << -1 <<endl;
}
else
{
for(i=a;i<b;i++)
{
cout << pow(k,i) << " " ;
}
cout << pow(k,b)<< endl;
}
*/
power = 1;
for(i=0;power <= r;i++)
{
if(power >= l)
{
if(flag == 0)
{printf("%I64d", power);flag = 1;}
else
printf(" %I64d", power);
}
if(r/power < k )
break;
power*= k;
}
if(flag)
printf("\n");
else
printf("-1\n");
}
return 0;
}