team2012-F3-sol-0016

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
题意:给定一个l*w*h的立方体,每个方块上有一个数字,每次可以从相邻两个方块上增加同样的数或者减去同样的数,问最后是否可以都变为0
解法:对所有方块按(l+w+h)进行奇偶分类,则相邻的方块不是同一类,且每次操作均不改变两类方块数字和的差值,所以只要判断一下初始的差是否为零就可以
}}}
{{{
#include <iostream>

using namespace std;

int main()
{
    int l, w, h;
    while(cin>>l>>w>>h)
    {
        int odd = 0,
            even = 0;
        for(int i=1;i<=l;i++)
            for(int j=1;j<=w;j++)
                for(int k=1;k<=h;k++)
                {
                    int t;
                    cin>>t;
                    if((i+j+k) & 1)
                        odd += t;
                    else
                        even += t;
                }
        cout<<(odd==even?"Yes":"No")<<endl;
    }

    return 0;
}
}}}
题意:给定一个l*w*h的立方体,每个方块上有一个数字,每次可以从相邻两个方块上增加同样的数或者减去同样的数,问最后是否可以都变为0
解法:对所有方块按(l+w+h)进行奇偶分类,则相邻的方块不是同一类,且每次操作均不改变两类方块数字和的差值,所以只要判断一下初始的差是否为零就可以
#include <iostream>
using namespace std;
int main()
{
    int l, w, h;
    while(cin>>l>>w>>h)
    {
        int odd = 0,
            even = 0;
        for(int i=1;i<=l;i++)
            for(int j=1;j<=w;j++)
                for(int k=1;k<=h;k++)
                {
                    int t;
                    cin>>t;
                    if((i+j+k) & 1)
                        odd += t;
                    else
                        even += t;
                }
        cout<<(odd==even?"Yes":"No")<<endl;
    }
    return 0;
}