一本通OJ-lowbit 求和
lowbit 求和
题意
求
分析
显然暴力会超时。那么我们考虑另外做法。
显然
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+7;
int n,a[N];
const int mod=199907210507;
int tr[N*60][3];
int tot=1,num[N*60];
int ans;
void insert(int id){
int p=1;
for(int i=0;i<=61;i++){
int ch=(a[id]>>i)&1;
if(!tr[p][ch]) tr[p][ch]=++tot;
p=tr[p][ch];
num[p]++;
}
}
int get_lowbit_ans(int id){
int p=1;
int res=0;
for(int i=0;i<=61;i++){
int ch=(a[id]>>i)&1;
res+=num[tr[p][ch^1]]%mod*(1ll<<i)%mod;
p=tr[p][ch];
}
return res;
}
void solve(){
for(int i=1;i<=n;i++){ans%=mod;ans+=get_lowbit_ans(i);}
printf("%lld",ans);
}
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),insert(i);
solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】