Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33792 | 22fhq | 【S】T1 | C++ | 运行出错 | 40 | 3080 MS | 764 KB | 1092 | 2024-10-22 15:26:37 |
//60 //lst is O(Tnn) #include<bits/stdc++.h> using namespace std; #define int long long int l,r; set<int>s; void dfs(int p,int sum){ if(p>r){ if(sum) s.insert(sum); return; } dfs(p+1,sum|p); dfs(p+1,sum); } void slv(){ s.clear(); dfs(l,0); cout<<s.size()<<endl; } int ans[256][256]; int an=0; void slv1(){ int x=r; int cnt=0; while(x)x>>=1,cnt++; x=1; while(cnt)x<<=1,cnt--; x--; int ans=0; for(int i=l;i<=x;i++){ int sum=0; for(int j=l;j<=r;j++){ if((j|i)==i)sum|=j; } if(i==sum)ans++; } an=ans; } signed main(){ //freopen("or.in","r",stdin); //freopen("or.out","w",stdout); for(l=1;l<=255;l++){ for(r=l;r<=255;r++){ slv1(); ans[l][r]=an; } } int T; cin>>T; while(T--){ cin>>l>>r; if(r-l<=5) slv(); else cout<<ans[l][r]<<endl;; } //cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }