View Code of Problem 20

#include<stdio.h>
#include<math.h>
#include<string.h>
int k=0;
int sum=0;
int test(int n)
{
	int i,flag=0,sum=1;
	if(n==1)
		flag=1;
	for(i=0;i<=sqrt(n);i++)
	{
		sum*=2;
		if(sum==n)
		{
			flag=1;
			break;
		}

	}
	return flag;
}

void f(int n)
{
	int i,j,max,a[1000],temp=1,flag=0;

	   if(test(n))
		flag=1;
		for(i=0;temp<n;i++)
			{
				
				if(test(n-temp)==0)
				{
					n=n-temp;
					flag=1;
					sum++;
					f(n);
				}
				temp=temp*2;

			}
	
			if(flag==0)
				sum++;
		if(sum%2==0)
			k=1;
		else
			k=0;
	
	

}
void main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		f(n);
		if(k)
		printf("Yes\n");
		else
		{
			sum--;
			printf("No\n");
		}

	}
}

Double click to view unformatted code.


Back to problem 20