第一次做这题时,得了85分,Wa了#1和#7.
翻翻讨论区,是爆longlong了。于是修改了一下就过了
做完后想:我第一次也有判断啊,为什么我第一次就错了呢?
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long l,r,w;cin>>l>>r>>w;
if(w==1){
if(l==1)
cout<<1;
else
cout<<-1;
return 0;
}
long long s=1;
bool o=0;
while(1){
if(s>=l){
if(s<=r){
cout<<s<<' ';
o=1;
}else
break;
}
s*=w;
if(s<0)break;//如果溢出了就会变成负数,break
}
if(!o) cout<<-1;
}
难道溢出了不一定会变成负数?请求大佬解释一下