给定整数 s,t,u,l,r,m≤30,sz=2m−1,询问有多少个整数 x∈[l,r] 使得 (t−2ux)modx<2u。或者以下是代码形式:
auto f = [&](int s, int t, int u) { return (t - s * (1ll << u) % sz + sz) % sz; };
auto calc = [&](int l, int r, int t, int v) {
int res = 0;
for (int i = l; i <= r; i++) res += f(i, t, v) < (1 << v);
return res;
};
然后要调用 calc(l,r,t,v∈[0,m)) 这样子,这是一组数据需要的计算量,一共 5000 组数据,有没有什么方法能解它?