View Code of Problem 20

#include<stdio.h>
#include<math.h>
int a[1000010];
int n;
int main()
{
    int i,j;
	a[1]=1;
	a[2]=1;
	a[3]=0;
	for(i=1;i<=17;i++)
	{
		int x=pow(2.0,i);
		a[x]=1;
	}
	for(i=4;i<100000;i++)
	{
		if(a[i]!=1)
         for(j=i-1;j>=(i+1)/2;j--)
		 {
			 if(a[j]!=a[i-j]) {a[i]=1;break;}
			 if(j==1) a[i]=0;
		 }
	}
	while(scanf("%d",&n)!=EOF)
	{
		if(a[n]) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 20