Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 5145 | Accepted: 2811 |
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
也就是说:要是是2的指数的话,就输出YES,否者输出NO
代码(oms)
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
#define INF 1000000001
__int64 n;
int main(){
while(scanf("%I64d",&n)!=EOF){
if(n<=1) break;
else{
while(n){
if(n&1) break;
else n>>=1;
}
}
if(n==1) printf("YES\n");
else printf("NO\n");
}
return 0;
}