-
Notifications
You must be signed in to change notification settings - Fork 0
/
AishAndXOR.java
33 lines (30 loc) · 900 Bytes
/
AishAndXOR.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-manipulation/practice-problems/algorithm/aish-and-xor-2/
* tag: #bit-manipulation
*/
import java.util.Scanner;
class AishAndXOR {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sz = n + 1;
int[] xorArr = new int[sz];
int[] zeroArr = new int[sz];
int val;
for (int i = 1; i < sz; i++) {
val = sc.nextInt();
xorArr[i] = xorArr[i - 1] ^ val;
zeroArr[i] = zeroArr[i - 1] + ((val == 0) ? 1 : 0);
}
int q = sc.nextInt();
int l, r, xorVal, zeroNum;
for (int i = 0; i < q; i++) {
l = sc.nextInt();
r = sc.nextInt();
xorVal = xorArr[r] ^ xorArr[l - 1];
zeroNum = zeroArr[r] - zeroArr[l - 1];
System.out.println(xorVal + " " + zeroNum);
}
return;
}
}