POJ_2975
假设某堆石子有y个,其余的各堆石子的Nim和为x,由于x^x=0且x^k!=0(k!=x),所以只有当y>x时拿走y-x个石子才能使得整体的Nim和为0。
#include<stdio.h>
#include<string.h>
#define MAXD 1010
int N, a[MAXD];
void solve()
{
int i, j, k, ans = 0, cnt = 0;
for(i = 0; i < N; i ++)
{
scanf("%d", &a[i]);
ans ^= a[i];
}
for(i = 0; i < N; i ++)
if((ans ^ a[i]) < a[i])
++ cnt;
printf("%d\n", cnt);
}
int main()
{
for(;;)
{
scanf("%d", &N);
if(!N)
break;
solve();
}
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步