C Golden gun的巧克力

时间:2021-09-03 15:21:53

Time Limit:1000MS  Memory Limit:65535K

题型: 编程题   语言: 无限制

描述

    众所周知,13级有尊大神Golden gun,人称根叔,简称金枪!众立志进校队的师弟如果不认识这个成功人士,我只能说太失败了!
他出手阔绰,首战夺金!由于工作关系,Golden gun坐享艺术学院所有资源,他可以自豪地说:“我要让全世界都知道!华农的艺术学
院的MM市场都让我承包了!”,据某可靠消息来源称,Golden gun的短号非常抢手,在艺术学院可谓是无人不晓。经常会有艺术学院的
MM拨打这个热线希望Golden gun大神能给MM一丢丢的时间
经常在智商上狠狠鄙视我这个弱菜师妹的成功人士Golden gun当然不会追求肤浅的外在美,而是内在美!现在请允许我用七字真言
来阐释内在美的真谛,那就是,脸好还要智商高!用一个四字词语概括:脑残退散。被艺术学院的MM们电话骚扰后,Golden gun为了认
真切题决定出手虐MM!
Golden gun让弱菜师妹出了一个题:我们定义,在一个N*M的盒子A中,每个格子的巧克力数量为Aij。MM可以在其中选择在一个格子
上加任意t个巧克力,如果有相邻(即两个格子拥有一条公共边)的情况,则必然要选择其中一个相邻的格子上加相同t个巧克力。
(注意:Aij和t都可以为负也可以为正)如果MM在任意次操作后可以把盒子上每个格子上的巧克力数量都变成0,即称为高智商白富美,
GG就会由衷的欣赏这个MM,然后…你们懂的。
那么问题来了,MM不知道自己能不能约到Golden gun,就来求助万能的师弟师妹希望预见结局,如果整盒巧克力不能成功归为零,那
么只能遗憾地输出“gun!”,如果可以的话,那就可以很高兴地输出“yue!”了。 出题人:locked_M

输入格式

测试数据有多组。
每组数据第一行两个整数N,M(1<=N,M<=5).
第二行到第N+1行,每行有M个数,每个数的取值范围是[-5000,5000].
输入以0 0结束

输出格式

如果不能成功归零,输出“gun!”,否则输出“yue!”

输入样例

2 2
0 0
1 1 2 2
1 1
1 0 0 0

输出样例

yue!
gun! 方法1:
#include<stdio.h>
main()
{
int n, m;
int i, j, k, s;
int a[][];
while ()
{
scanf("%d%d", &n, &m);
if (n == && m == )
break;
else
{
for (i = ; i < n; i++)
for (j = ; j < m; j++)
scanf("%d", &a[i][j]);
if (n == && m == )
k=;
else
{
for (i = ; i < n; i++)
{
for (j = ; j < m - ; j++)
if (a[i][j] != )
{
a[i][j + ] -= a[i][j];
a[i][j] = ;
}
else
continue;
}
for (i = ; i < n - ; i++)
if (a[i][m - ] != )
{
a[i + ][m - ] -= a[i][m - ];
a[i][m - ] = ;
}
k = a[n - ][m - ];
}
if (k != )
printf("gun!\n");
else
printf("yue!\n");
}
}
}

方法2:

#include<stdio.h>
int main()
{
int n, m;
int i, j, k, leap;
int a[];
int sum1 = , sum2 = ;
while ()
{
scanf("%d%d", &n, &m);
if (!n && !m)
break;
sum1 = sum2 = leap = ;
if (m % == )
{
m = m + ;
leap = ;
}
for (i = ; i <= n * m; i++)
{
if (leap && i % (m) == )
a[i] = ;
else
scanf("%d", &a[i]);
if (i % == )
sum1 += a[i];
else
sum2 += a[i];
}
if (n == && m == )
{
printf("yue!\n");
continue;
}
if (sum1 == sum2)
printf("yue!\n");
else
printf("gun!\n");
}
return ;
}