求助80分,T了两个点,求优化

P2431 正妹吃月饼

~~别在意快读~~
by xdd5689 @ 2022-11-20 22:04:46


?您确定您的做法是对的?
by 菡萏 @ 2022-11-21 19:08:45


@[Lotuses](/user/414231) 那可以指点一下吗
by xdd5689 @ 2022-11-21 19:40:40


这不是 $O(b-a)$ 的吗 $1\le a,b\le 10^{18}$
by 菡萏 @ 2022-11-21 19:54:11


@[Lotuses](/user/414231) 已A ```cpp #include <bits/stdc++.h> #define l long long l a,b,x[64],sum[64]={0,1},ans=0; using namespace std; int main() { cin>>a>>b; l t=b-a,ans1=0,ans11=0; for(l i=2;i<=63;i++) { sum[i]=sum[i-1]*2; } for(l i=1;i<=63;i++) { if(t<sum[i]) { ans1=i-1; break; } } if(t!=0) for(l i=a;i<=b;i++) { if(i%sum[ans1]==sum[ans1]-1) { ans11=i; } } else ans11=a; ans=0; for(l i=63;i>=1;i--) { if(ans11>=sum[i]) { ans++; ans11-=sum[i]; } } printf("%lld",ans); return 0; } ```
by xdd5689 @ 2022-11-21 19:57:23


~~我的时间复杂度比别人高好多~~
by xdd5689 @ 2022-11-21 20:00:51


|