其他分享
首页 > 其他分享> > HDU-1850 Being a Good Boy in Spring Festival

HDU-1850 Being a Good Boy in Spring Festival

作者:互联网

Being a Good Boy in Spring Festival

尼姆博弈

求出异或和之后,\(sum \oplus num[i]\) 就是除去当前值,其他数字的异或和,为了使整体异或为 0,所以就要让此时的 \(num[i]\) 变成 \(sum \oplus num[i]\),因此,如果 \(num[i] > sum \oplus num[i]\) 则改变这个 \(num[i]\) 可行,等于的时候相当于没拿,所以不可行

tips: \(\oplus\) 的优先级比 \(>\) 低

#include <iostream>
using namespace std;
const int maxn = 110;
int num[maxn];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    while(cin >> n && n)
    {
        for(int i=0; i<n; i++) cin >> num[i];
        int sum = 0;
        for(int i=0; i<n; i++) sum ^= num[i];
        int ans = 0;
        for(int i=0; i<n; i++) if(num[i] > (sum ^ num[i])) ans++;
        if(sum == 0) ans = 0;
        cout << ans << endl;
    }
    return 0;
}

标签:Boy,HDU,Good,int,sum,Festival,异或,num,oplus
来源: https://www.cnblogs.com/dgsvygd/p/16270024.html