码迷,mamicode.com
首页 > 其他好文 > 详细

Candy Distribution_找规律

时间:2016-09-03 22:24:20      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:

Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 6012   Accepted: 3341

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

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    long long n;
    while(~scanf("%lld",&n))
    {
       while(n)
       {
           if(n&1) break;//二进制数最右位为1时,若n为1,则为2的指数,否则不能除2了也要退出
           n>>=1;//相当于每次除2

       }
       if(n==1) printf("YES\n");
       else printf("NO\n");
    }
    return 0;
}

 

Candy Distribution_找规律

标签:

原文地址:http://www.cnblogs.com/iwantstrong/p/5838042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!