海盗分金问题。有N个海盗,他们要分得一些金币,这个要从只有一个海盗开始往后面开始分析。具体分析可以看这篇博客(海盗分金问题),别人已经总结的很详细了我就不重复造轮子了。


题目:http://codeforces.com/problemset/problem/690/A2


代码:

Memory: 4 KB
Time: 15 MS
Language: GNU G++ 5.1.0
Result: Accepted
#include <iostream>
using namespace std;
int check(int x){
    return (x&(x-1))?0:1;
}
int main()
{
    int x, ans;
    while(cin>>x){
        if(check(x))ans=0;
        else if(x&1)ans=(x-1)/2;
        else{
            int y=1;
            while(y<=x)y<<=1;
            ans=(x-y/2)/2;
        }
        cout<<ans<<endl;
    }
    return 0;
}