贪心。每次找最大/最小的能用的 i
by 2c_s @ 2024-04-13 21:42:57
@[2c_s](/user/583186) 有代码吗
by tianyu_awa @ 2024-04-13 21:51:18
@[tianyu_awa](/user/716260) 就贪心,找能用的最大的,我过了
by monkeyinGD @ 2024-04-13 21:52:06
@[tianyu_awa](/user/716260)
```cpp
vector<pll>v;
int cnt;
ll L,R;
ll nowi(ll n){
ll t=0;
while(n%(1ll<<t)==0&&1ll*(1ll<<t)<=R)++t;
return t;
}
ll nowj(ll now){
return now/(1ll<<nowi(now));
}
ll nexti(ll now){
for(ll i=nowi(now)-1ll;i>=0;--i){
if((now/(1ll<<i)+1ll)*(1ll<<i)<=R)return i;
}
return 114514;
}
signed solution(){
L=read(),R=read();//快读
ll now=L;
while((1ll<<nowi(now))*(nowj(now)+1ll)<=R){
ll nowmax=1ll<<nowi(now);
v.pb({now,(now/nowmax+1ll)*nowmax});
now=(now/nowmax+1ll)*nowmax;
}
while(now!=R){
ll nxtpow=1<<nexti(now);
v.pb({now,(now/nxtpow+1ll)*nxtpow});
now=(now/nxtpow+1ll)*nxtpow;
}
cout<<v.size()<<"\n";
for(int i=0;i<v.size();++i){
printf("%lld %lld\n",v[i].fi,v[i].se);
}
return 0;
}
```
by 2c_s @ 2024-04-14 08:45:56