题目链接:这里
题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。最后谁无子可取即输。
解法:算规律题吧。。来自网上大神的一段分析。

首先看两堆:1 1 的状态肯定是先手输~~但是俩数不一样的话就是先手赢了。。
再看三堆:1 1 1的状态肯定是先手赢,1 2 1也是先手赢。。。1 2 2也是先手赢。。总之都是先手赢。。
再看四堆:1 1 2 2 这样的肯定是先手输。。1 1 2 3 这样的就是先手赢了。。。1 2 3 4是先手赢。。
再看五堆:1 1 1 1 1 是先手赢。。1 1 1 1 2 先手赢。。。。…………都是先手赢。。1 2 3 4 1  也是先手赢。。。。各种先手赢。。
由上我们可以得出结论。。。堆的个数为奇数的情况下。。各种先手赢。总是先手赢。。。堆的数目为偶数的情况下。。如果当前各个堆的石头数目能够对称。。也就是说。。把石头数目排序之后。。第1、2堆数量相等。。3、4堆数量相等,5、6堆数量相等………………这样的情况下。。先手必输。。其他情况都是先手赢。。。
//POJ 1740

#include <stdio.h>
#include <string.h>
#include <algorithm>
int a[11], num[110];

int main()
{
    int n;
    while(scanf("%d", &n) != EOF && n)
    {
        memset(num, 0, sizeof(num));
        for(int i = 1; i <= n; i++){
            scanf("%d", &a[i]);
            num[a[i]]++;
        }
        int cnt = 0;
        for(int i = 1; i <= 100; i++) if(num[i]%2==1) cnt++;
        puts(cnt?"1":"0");
    }
    return 0;
}