链接:https://ac.nowcoder.com/acm/contest/52244/A 来源:牛客网 Komorebi是一个小学生,今天他需要学习位运算里的异或(\bigoplus⨁)。 在每一个二进制为中,如果某一位AA和BB相同(都是00或者都是11),那么结果的这一位是00,否则就是11,例如10\bigoplus 6=1210⨁6=12,即(1010)_2\bigoplus (0110)_2=(1100)_2(1010) 2 ⨁(0110) 2 =(1100) 2 。 老师给了同学们一个长度为nn的数组,然后要求同学们找到有多少个数对<i,j><i,j>,令A=a_iA=a i ,B=a_jB=a j ,满足A\bigoplus B = 0A⨁B=0。 请注意,<i,j><i,j>和<j,i>(i\neq j)<j,i>(i =j)是两个不同的数对。 你能帮帮他完成作业吗?
时间: 2023-04-06 07:02:41 浏览: 154
我可以回答这个问题。这是一个位运算的问题,需要找到数组中有多少个数对<i,j>,满足a_i⨁a_j=0。可以使用哈希表来记录每个数出现的次数,然后遍历数组,对于每个数a_i,查找哈希表中是否存在a_i⨁0=a_i的数,如果存在,则说明有一对数满足条件,将计数器加1。最后返回计数器即可。
相关问题
链接:https://ac.nowcoder.com/acm/contest/59840/K 来源:牛客网 给定 � n 个坐标,求其中 3 3 个坐标能表示一个等腰三角形的组数。 三点共线不算三角形,等边三角形为特殊的等腰三角形。
这道题可以用哈希表来解决。首先枚举三角形的顶点,然后计算出这个顶点到其它点的距离,并将距离存入哈希表中。接着枚举其它点作为三角形的另一个顶点,计算出这个点到剩下的点的距离,并在哈希表中查找是否存在与之前顶点距离相等的点,如果存在,则说明这三个点可以组成等腰三角形。
具体实现可以使用 STL 中的 unordered_map 来实现哈希表。时间复杂度为 O(n^2)。
以下是代码实现:
链接:https://ac.nowcoder.com/acm/contest/67628/1005 来源:牛客网 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。(用c++打出
以下是用C++打印正斜线形图案的代码:
```
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i - 1; j++) {
cout << " ";
}
cout << "*" << endl;
}
return 0;
}
```
阅读全文