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;
}