poj 3372 Candy Distribution

Candy Distribution
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 4814   Accepted: 2595

Description

N children standing in circle who are numbered 1 through N clockwise are waiting their candies. Their teacher distributes the candies by in the following way:

First the teacher gives child No.1 and No.2 a candy each. Then he walks clockwise along the circle, skipping one child (child No.3) and giving the next one (child No.4) a candy. And then he goes on his walk, skipping two children (child No.5 and No.6) and giving the next one (child No.7) a candy. And so on.

Now you have to tell the teacher whether all the children will get at least one candy?

Input

The input consists of several data sets, each containing a positive integer N (2 ≤ N ≤ 1,000,000,000).

Output

For each data set the output should be either "YES" or "NO".

Sample Input

2
3 
4

Sample Output

YES
NO
YES
#include<iostream>
#include<algorithm>
using namespace std;
int f(int n)
{
int i=1;
while(1) {
if(n==i)
return 1;
if(n<i)
return 0;
i*=2;
}
}
int main()
{
int n;
while(cin>>n)
{
if(f(n))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}

posted @ 2011-11-23 10:08  w0w0  阅读(167)  评论(0)    收藏  举报