#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n;//因为满足题意的数的最右下方结点最大且与根节点奇偶性相同,所以树的右子树一定有偶数个结点,左子树可以有和右子树一样多的结点,也可以多一个结点
    cin>>n;
    int x=1;
    while(x<=n){
        if(n==x||n==x+1){//n等于x或者n等于x+1,x+1即在x的基础上在左子树加了一个结点,始终保持树的左子树结点为偶数,这样一定可以在左子树上+1个结点
            cout<<1;
            return 0;
        }
        if(x&1)//如果x是奇数,在x的基础上加一个结点使其作为新树的右子树,再加上x使其作为新树的左子树,再加上一个根节点
            x=x+1+x+1;
        else//如果x是偶数,在x的基础上加上x使其作为新树的左子树,再加上一个结点作为新树的根节点
            x=x+x+1;
    }
    cout<<0;
    return 0;
}
Codeforces Global Round 5E(构造,思维)
原文:https://www.cnblogs.com/ldudxy/p/11701399.html