April Fools Day Contest 2014

April 29, 2014

April Fools Day Contest 2014

A、C、H三道题目


A. The Great Game

这题没看懂。。看了官方题解真是恍然大悟啊,原来是石头剪刀布啊!!!

8< 代表剪刀啊

() 代表石头啊

[] 代表布啊

真是逆天啊,这么一说还真觉得有点像。。。。尤其是那个剪刀。

给那个出题人的想象力跪了。

 /*
  * =====================================================================================
  *       Filename : TheGreatGame.cpp
  *    Description : So Funny
  *    Version     : 0.1
  *        Created : 04/29/14 07:58
  *         Author : Liu Xue Yang (LXY), liuxueyang457@163.com
  *         Motto  : How about today?
  * =====================================================================================
 */
#include <cstdlib>
#include <cstdio>
#include <cstring>

using namespace std;

/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  judge
 *  Description:  who win?
 * =====================================================================================
 */
    int
judge ( char a, char b )
{
    if ( a=='[' ) {
        if ( b=='[' ) {
            return 0;
        }
        else if ( b=='(' ) {
            return 1;
        }
        else {
            return -1;
        }
    }
    if ( a=='(' ) {
        if ( b=='[' ) {
            return -1;
        }
        else if ( b=='(' ) {
            return 0;
        }
        else {
            return 1;
        }
    }
    if ( a=='8' ) {
        if ( b=='[' ) {
            return 1;
        }
        else if ( b=='(' ) {
            return -1;
        }
        else {
            return 0;
        }
    }
    return 0;
}        /* -----  end of function judge  ----- */

/* 
 * ===  FUNCTION  ======================================================================
 *         Name: main
 * =====================================================================================
 */

    int
main ( int argc, char *argv[] )
{
    char a[21], b[21];
    scanf ( "%s%s", a, b );
    int len = strlen(a), wina = 0, winb = 0;
    for ( int i = 0; i < len; i+=2 ) {
        int tmp = judge(a[i], b[i]);
        if ( tmp > 0 ) {
            ++wina;
        }
        else if ( tmp < 0 ) {
            ++winb;
        }
    }
    if ( wina > winb ) {
        printf ( "TEAM 1 WINS\n" );
    }
    else if ( wina < winb ) {
        printf ( "TEAM 2 WINS\n" );
    }
    else {
        printf ( "TIE\n" );
    }

        return EXIT_SUCCESS;
}                /* ----------  end of function main  ---------- */

看了一下别人的python代码,挺简洁。

#!/bin/python
team1 = input().replace('[', '7').replace('(', '6')
team2 = input().replace('[', '7').replace('(', '6')
s = 0
for i in range(0, len(team1), 2):
    if team1[i] > team2[i]:
        s += 1
    elif team1[i] < team2[i]:
        s -= 1
    if team1[i] == '8' and team2[i] == '6':
        s -= 2
    if team1[i] == '6' and team2[i] == '8':
        s += 2
if s > 0:
    print("TEAM 1 WINS")
elif s < 0:
    print("TEAM 2 WINS")
else:
    print("TIE")

这个思路眼前一亮,把对应的字符赋值,比较,然后再修正。

C. Magnum Opus

同样的,开始我也没看懂,没错,是拉丁语。。。

官方题解说Google翻译一下这封信,可以发现这是一封很优美又充满讽刺的信。。

好吧,翻译之后也没看懂。需要注意前面的大写的罗马数字,然后猜想大概和配方的量有关系。

五种配方的量依次是:1 1 2 7 4

所以只需要让五种原料分别除以上面的五个数字,然后找到最小值,输出。

这得需要多丰富的想象力啊!!

#!/bin/python

a, b, c, d, e = list(map(int, input().split(' ')))
result = (int)(min(a/1, b/1, c/2, d/7, e/4))
print(result)

恩,用python写比较简单。

H. A + B Strikes Back

这道题嘛。绝。

官方题解说,提交的前五次系统是不会测试直接给WA!!!

我看到这句话就笑了啊!!!这也太有创意了吧,哈哈哈哈

#!/bin/python
a, b = list(map(int, input().split(' ')))
print(a+b)

不愧是April Fool’s Day,题目真有意思。。

comments powered by Disqus