April Fools Day Contest 2014
时间:2014-04-29 09:24:46
收藏:0
阅读:404
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,题目真有意思。。
评论(0)