显示原始代码
#include <iostream>
#include <vector>
using namespace std;
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int n;
cin >> n;
int count = 0;
vector<vector<int>> gcd_values(n + 1, vector<int>(n + 1, 0));
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= n; ++j) {
gcd_values[i][j] = gcd(i, j);
gcd_values[j][i] = gcd_values[i][j];
}
}
for (int a = 1; a <= n; ++a) {
for (int b = a; b <= n; ++b) {
if (gcd_values[a][b] == (a ^ b)) {
count++;
}
}
}
cout << count << endl;
return 0;
}