首页 > 代码库 > April Fools Day Contest 2014

April Fools Day Contest 2014

April Fools Day Contest 2014

A、C、H三道题目

===================================================================

A. The Great Game

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

8< 代表剪刀啊

() 代表石头啊

[] 代表布啊

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

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

 1 /*
 2  * =====================================================================================
 3  *       Filename : TheGreatGame.cpp
 4  *    Description : So Funny
 5  *    Version     : 0.1
 6  *        Created : 04/29/14 07:58
 7  *         Author : Liu Xue Yang (LXY), liuxueyang457@163.com
 8  *         Motto  : How about today?
 9  * =====================================================================================
10  */
11 #include <cstdlib>
12 #include <cstdio>
13 #include <cstring>
14 
15 using namespace std;
16 
17 /* 
18  * ===  FUNCTION  ======================================================================
19  *         Name:  judge
20  *  Description:  who win?
21  * =====================================================================================
22  */
23     int
24 judge ( char a, char b )
25 {
26     if ( a==[ ) {
27         if ( b==[ ) {
28             return 0;
29         }
30         else if ( b==( ) {
31             return 1;
32         }
33         else {
34             return -1;
35         }
36     }
37     if ( a==( ) {
38         if ( b==[ ) {
39             return -1;
40         }
41         else if ( b==( ) {
42             return 0;
43         }
44         else {
45             return 1;
46         }
47     }
48     if ( a==8 ) {
49         if ( b==[ ) {
50             return 1;
51         }
52         else if ( b==( ) {
53             return -1;
54         }
55         else {
56             return 0;
57         }
58     }
59     return 0;
60 }        /* -----  end of function judge  ----- */
61 
62 /* 
63  * ===  FUNCTION  ======================================================================
64  *         Name: main
65  * =====================================================================================
66  */
67 
68     int
69 main ( int argc, char *argv[] )
70 {
71     char a[21], b[21];
72     scanf ( "%s%s", a, b );
73     int len = strlen(a), wina = 0, winb = 0;
74     for ( int i = 0; i < len; i+=2 ) {
75         int tmp = judge(a[i], b[i]);
76         if ( tmp > 0 ) {
77             ++wina;
78         }
79         else if ( tmp < 0 ) {
80             ++winb;
81         }
82     }
83     if ( wina > winb ) {
84         printf ( "TEAM 1 WINS\n" );
85     }
86     else if ( wina < winb ) {
87         printf ( "TEAM 2 WINS\n" );
88     }
89     else {
90         printf ( "TIE\n" );
91     }
92 
93         return EXIT_SUCCESS;
94 }                /* ----------  end of function main  ---------- */

 

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

 

 1 #!/bin/python
 2 team1 = input().replace([, 7).replace((, 6)
 3 team2 = input().replace([, 7).replace((, 6)
 4 s = 0
 5 for i in range(0, len(team1), 2):
 6     if team1[i] > team2[i]:
 7         s += 1
 8     elif team1[i] < team2[i]:
 9         s -= 1
10     if team1[i] == 8 and team2[i] == 6:
11         s -= 2
12     if team1[i] == 6 and team2[i] == 8:
13         s += 2
14 if s > 0:
15     print("TEAM 1 WINS")
16 elif s < 0:
17     print("TEAM 2 WINS")
18 else:
19     print("TIE")

 

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

 

C. Magnum Opus

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

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

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

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

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

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

 

1 #!/bin/python
2 
3 a, b, c, d, e = list(map(int, input().split( )))
4 result = (int)(min(a/1, b/1, c/2, d/7, e/4))
5 print(result)

 

恩,用python写比较简单。

 

H. A + B Strikes Back

这道题嘛。绝。

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

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

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

 

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