/**
有A、B、C、D、E这5个人，每个人额头上都帖了一张黑或白的纸。5人对坐，每 个人都可以看到其他人额头上纸的颜色。5人相互观察后：
A说：“我看见有3人额头上贴的是白纸，1人额头上贴的是黑纸。”
B说：“我看见其他4人额头上贴的都是黑纸。”
C说：“我看见1人额头上贴的是白纸，其他3人额头上贴的是黑纸 。”
D说：“我看见4人额头上贴的都是白纸。”
E什么也没说。

现在己知额头上贴黑纸的人说的都是谎话，额头贴白纸的人说的都是实话。问这5人 谁的额头上贴的是白纸，谁的额头上贴的是黑纸？
*/

#include<stdio.h>
int main()
{
    int a, b, c, d, e;  /*0表示黑色，1表示白色*/
    for(a=0; a<=1; a++)  /*穷举五个人额头帖纸颜色的全部可能*/
        for(b=0; b<=1; b++)
            for(c=0; c<=1; c++)
                for(d=0; d<=1; d++)
                    for(e=0; e<=1; e++)
                        if( (a&&b+c+d+e==3 || !a&&b+c+d+e!=3) &&
                            (b&&a+c+d+e==0 || !b&&a+c+d+e!=0) &&
                            (c&&a+b+d+e==1 || !c&&a+b+d+e!=1) &&
                            (d&&a+b+c+e==4 || !d&&a+b+c+e!=4)
                        )
                        {
                            printf("A额头上的贴纸是%s色的.\n",a?"白":"黑");
                            printf("B额头上的贴纸是%s色的.\n",b?"白":"黑");
                            printf("C额头上的贴纸是%s色的.\n",c?"白":"黑");
                            printf("D额头上的贴纸是%s色的.\n",d?"白":"黑");
                            printf("E额头上的贴纸是%s色的.\n",e?"白":"黑");
                        }
    return 0;
}

//运行结果：

//A额头上的贴纸是黑色的.
//B额头上的贴纸是黑色的.
//C额头上的贴纸是白色的.
//D额头上的贴纸是黑色的.
//E额头上的贴纸是白色的.
