4.可结合的元素对【算法赛】 - 蓝桥云课 (lanqiao.cn) 这道题就是考知不知道lowbit()函数:
js
#include<bits/stdc++.h>
using namespace std;
#define LL long long
int lowbit(int x)
{
return x&-x;
}
int main()
{
cin.tie(nullptr)->ios::sync_with_stdio(false);
int n;cin>>n;
vector<int>a(n+1);
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
LL ans = 0;
for (int i = 1; i <= n; ++i) {
for (int j = i + 1; j <= n; ++j) {
if (lowbit(a[i] + a[j]) == a[i] + a[j])ans += 1;
}
}
cout<<ans<<endl;
return 0;
}
这样写虽然可以通过但是有风险:
但是实际上是数据不强,擦着边过得,因为n最大1e5,我们用了两个for循环,已经1e10了。
另外就是ans要开long long,不开过不了: