rt,对数做法被卡精度(#10)卡到自闭,加上特判才能过,有什么方法解决吗?
代码:
#include<iostream>
#include<cmath>
using namespace std;
long long l,r,w;
int main()
{
cin>>l>>r>>w;
if(w==1)
{
if(l==1)
cout<<1;
else
cout<<-1;
return 0;
}
long long lb=(long long)(log2(l)/log2(w)),rb=(long long)(log2(r)/log2(w));
if((long long)pow(w,lb)<l)
lb++;
if((long long)pow(w,rb)>r)
rb--;
if(lb>rb)
cout<<-1;
else
{
long long p=(long long)pow(w,lb);
for(int i=lb;i<=rb;i++,p*=w)
cout<<p<<" ";
}
return 0;
}