C Golden gun的巧克力

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!
");
                else
                    printf("yue!
");
        }
    }
}
View Code

方法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!
");
            continue;
        }
        if (sum1 == sum2)
            printf("yue!
");
        else
            printf("gun!
");
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/orchidzjl/p/4263635.html