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 12 2 1 1 1 00 0
输出样例
yue! gun!
方法1:
#include<stdio.h> main() {int n, m;int i, j, k, s;int a[10][10];while (1){scanf("%d%d", &n, &m);if (n == 0 && m == 0)break;else{for (i = 0; i < n; i++)for (j = 0; j < m; j++)scanf("%d", &a[i][j]);if (n == 1 && m == 1)k=0;else{for (i = 0; i < n; i++){for (j = 0; j < m - 1; j++)if (a[i][j] != 0){a[i][j + 1] -= a[i][j];a[i][j] = 0;}elsecontinue;}for (i = 0; i < n - 1; i++)if (a[i][m - 1] != 0){a[i + 1][m - 1] -= a[i][m - 1];a[i][m - 1] = 0;}k = a[n - 1][m - 1];}if (k != 0)printf("gun!\n");elseprintf("yue!\n");}} }
方法2:
#include<stdio.h> int main() {int n, m;int i, j, k, leap;int a[1000];int sum1 = 0, sum2 = 0;while (1){scanf("%d%d", &n, &m);if (!n && !m)break;sum1 = sum2 = leap = 0;if (m % 2 == 0){m = m + 1;leap = 1;}for (i = 1; i <= n * m; i++){if (leap && i % (m) == 0)a[i] = 0;elsescanf("%d", &a[i]);if (i % 2 == 0)sum1 += a[i];elsesum2 += a[i];}if (n == 1 && m == 1){printf("yue!\n");continue;}if (sum1 == sum2)printf("yue!\n");elseprintf("gun!\n");}return 0; }