Magic Forest

这里写图片描述
这里写图片描述

题目大意:找小于等于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;
}

猜你喜欢

转载自blog.csdn.net/qq_40240576/article/details/81571174