题目大意:找小于等于n的三个数,既能组成三角形,也要抑或值为0;
题解:第一条边为i,从1开始,第二条边为j,从i开始
1.先是i^j,再用0^(i^j)得到第三条边
2,若第三条边大于等于j小于等于n,并且能构成三角形(这里是两小边之和大于第三边)则OK。
//亦或的简单运用
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int ans = 0;
for(int i = 1 ; i <= n ; i++)
{
for(int j = i ; j<= n ; j++)
{
int k = i^j;
int q = 0^k;
if(q<=n&&q>=j&&i+j>q)
{
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}