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[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; } else continue; } 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"); else printf("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; else scanf("%d", &a[i]); if (i % 2 == 0) sum1 += a[i]; else sum2 += a[i]; } if (n == 1 && m == 1) { printf("yue!\n"); continue; } if (sum1 == sum2) printf("yue!\n"); else printf("gun!\n"); } return 0; }
时间: 2024-10-12 03:58:06