题目
原题链接:B. Magic Forest
题意
找到满足1≤a≤b≤c≤n,abc==0的非退化三角形的个数。
参考了其他作者的代码。模拟两条边来求满足条件的三角形,再根据上述条件可知任意两边异或得到第三边。因此可得ij≤n,i+j≥(ij)和(i^j)≥j。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
if((i^j)<=n && i+j>(i^j) && (i^j)>=j) ans++;
}
}
cout<<ans;
return 0;
}